Java常用类(ArrayList)

2

Java常用类(ArrayList)

  今天给小伙伴们介绍ArrayList类,ArrayList也是Java专门用于处理动态数组的类,和Vector基本相同,都是List接口的实现类,具有大量相似的成员方法。但是区别是Vector是同步单线程的,而ArrayList是多线程的,推荐使用ArrayList。

ArrayList类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package demo01;


import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.function.Predicate;

public class ArrayListClass {

public static void print(ArrayList<Integer> a) {
for (int i: a) {
System.out.print(i + " ");
}
System.out.println();
}
public static void main(String[] args) {
ArrayList<Integer> a = new ArrayList<>();
//public boolean addAll(Collection<? extends E> c) 将集合c中的元素加入到原集合中
//public boolean addAll(int index, Collection<? extends E> c) 在指定位置处将集合c中的元素加入到原集合中
//public boolean add(E e) 向动态数组尾部添加元素
//public void add(int index, E element) 在指定位置处添加元素
a.add(20);
a.add(0, 10);
a.add(30);

System.out.print("初始时动态数组a:");
print(a);

//public int size() 查看动态数组的大小
System.out.println("动态数组a的大小为:" + a.size());

//public boolean contains(Object o) 查看动态数组中是否存在元素
System.out.println("动态数组a是否包含元素20:" + a.contains(20));
System.out.println("动态数组a是否包含元素40:" + a.contains(40));

//public E get(int index) 获取动态数组对应索引元素
System.out.println("动态数组a中索引为1的元素是:" + a.get(1));

//public int indexOf(Object o) 从初始位置开始查找元素对应的索引
System.out.println("动态数组a中第一个元素10的索引为:" + a.indexOf(10));
//public int lastIndexOf(Object o) 从最后位置开始向前查找元素对应的索引
System.out.println("动态数组a中最后一个元素20的索引为:" + a.lastIndexOf(20));

//public E set(int index, E element) 修改动态数组指定位置元素
a.set(1, 15);
System.out.print("将索引1处改为15时,动态数组a:");
System.out.println(a);

//public Object[] toArray() 将动态数组元素转换为数组
Object[] array = a.toArray();
System.out.print("将动态数组转换为普通数组array:");
for (Object i: array) {
System.out.print(i + " ");
}
System.out.println();

//public boolean removeIf(Predicate<? super E> filter) 移除所有符合条件的元素,需要创建谓词对象
a.removeIf(new Predicate<Integer>() {
@Override
public boolean test(Integer integer) {
return integer == 10;
}
});
System.out.print("移除10时,动态数组a:");
System.out.println(a);

//public E remove(int index) 移除动态数组指定索引元素
a.remove(1);
System.out.print("移除索引1的元素,动态数组a:");
System.out.println(a);

//public void clear() 清空动态数组
a.clear();
System.out.print("移除所有元素后,动态数组a:");
System.out.println(a);

//public boolean isEmpty() 判断动态数组是否为空
System.out.println("动态数组a是否为空:" + a.isEmpty());
System.out.println("动态数组a的大小为:" + a.size());

//public static <T> boolean addAll(Collection<? super T> c, T... elements) Collections静态方法,向集合中添加元素
Collections.addAll(a, 20, 10, 40, 30);
System.out.print("添加元素后动态数组a:");
System.out.println(a);

//public synchronized void sort(Comparator<? super E> c) 对动态数组进行排序,排序规则要创建比较器对象
a.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
System.out.print("从小到大排序后动态数组a:");
System.out.println(a);

//public static void shuffle(List<?> list) 打乱动态数组中的元素
Collections.shuffle(a);
System.out.print("打乱元素后动态数组a:");
System.out.println(a);
}
}

1

Java小结

  当然了ArrayList的相关操作还有很多很多,在这里也不可能一一讲解,但是常用的一些操作都已经介绍,尤其是isEmpty,size,add,contains,get,indexOf索引和遍历这些操作,是笔试,面试中的重中之重,因为Vector是同步的,在Vector方法中有synchronized关键字,因此会影响性能,我们尽量使用ArrayList类,更加高效。

-------------本文结束感谢您的阅读-------------
0%