B站 韩顺平 老师课程的笔记

ArrayList

基本函数介绍

方法原型 作用
add(Object elem) 在list中加入对象参数(添加元素)
add(int index,Objece elem) 指定在下标index前添加一个对象
remove(int index) 根据下标索引删除元素
remove(Object elem) 删除具体对象(元素)
contains(Object elem) 如果和对象参数匹配就返回true
isEmpty() 如果list中没有元素就返回“true”
indexOf(Object elem) 返回对象的参数的索引或-1(如果没有这个元素)
size() 返回list中的元素的一个数
get(int index) 返回当前索引的对象

基本使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//假设有个类叫Egg
class Egg{}
//创建一个包含Egg对象的ArrayList
ArrayList<Egg> myList = new ArrayList<Egg> ();
//加入元素
Egg s = new Egg();//创建一个对象(后面可以赋值)
myList.add(s);//添加
//再加入一次元素
Egg b = new Egg();
myList.add(b);
//查询大小
int theSize = myList.size();
//查询特定元素
boolean isIn myList.contains(s);//查询是否含有s对象
//查询特定元素的位置
int idx = myList.indexOf(b);//查询得到b对象再myList中的索引
//判断集合是否为空
boolean empty = myList.isEmpty();
//删除b对象
myList.remove(b);
//得到下标索引为0的对象
Egg k = myList.get(0);//实际上就是让k也指向s指向的对象
//删除下标为0的对象
myList.remove(0);

注意事项

  1. ArrayList的大小是可变化的,不需要规定大小
  2. 存放对象是不用给定下标位置,可以直接在后面添加
  3. 也可指定添加
  4. 不能使用[]运算符
  5. 格式要为ArrayList,即创建包含元素为Type类型的元素

实际使用代码

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
public static void main(String[] args) {
List arrayList = new ArrayList();//编译类型为ArrayList的接口

// add:添加当单个元素,参数类型是Object,所以所有类型的对象都可添加进同一个arrayList
arrayList.add("jack");
arrayList.add(10);
arrayList.add(true);
arrayList.add(21.001);
arrayList.add(3, false);//在指定位置(下标为3的前面,添加后新的对象的下标就是3了)添加一个对象(false)
//可如此直接输出集合内容,格式和Arrays.toString()一样,输出结果:arrayList= [jack, 10, true, false, 21.001]
System.out.println("arrayList= " + arrayList);

// remove:删除单个元素
arrayList.remove(0);//删除第一个元素(按下标索引删除)
System.out.println("arrayList= " + arrayList);//输出arrayList= [10, true, false, 21.001]
arrayList.remove(true);//指定对象删除
System.out.println("arrayList= " + arrayList);//输出arrayList= [10, false, 21.001]
arrayList.add(0, "tom");

// contains:查找元素是否存在,返回值为Boolean类型
System.out.println("找jack " + arrayList.contains("jack"));//输出:找jack false
System.out.println("找tom " + arrayList.contains("tom"));//输出:找tom true
boolean con = arrayList.contains(false);
System.out.println("找false(arrayList中的一个对象) " + con);//输出:找false(arrayList中的一个对象) true

// size:获取元素个数,返回值是int类型的
System.out.println("先看一下有几个元素:" + arrayList);//输出:先看一下有几个元素:[tom, 10, false, 21.001](4个元素)
System.out.println("用size()输出元素个数:" + arrayList.size());//输出:用size()输出元素个数:4
int size = arrayList.size();
System.out.println("得到返回值后再输出" + size);//输出:得到返回值后再输出4

// isEmpty:判断是否为空,返回值为boolean
System.out.println("arrayList.isEmpty(): " + arrayList.isEmpty());//输出:arrayList.isEmpty(): false
List arrayList2 = new ArrayList();//创建一个空集合
System.out.println("arrayList2.isEmoty(): " + arrayList2.isEmpty());//输出:arrayList2.isEmoty(): true

// clear:清空
arrayList2.add("有元素了");
arrayList2.add("yes");
System.out.println("调用clear()前的arrayList2: "+arrayList2);//输出:调用clear()前的arrayList2: [有元素了, yes]
arrayList2.clear();//将arratList2的元素清空
System.out.println("调用clear()后的arrayList2: "+arrayList2);//输出:调用clear()后的arrayList2: []

// addAll:添加多个元素
System.out.println("使用addAll()前的arrayList: " + arrayList);//输出:使用addAll()前的arrayList: [tom, 10, false, 21.001]
//先给arrayList2添加两个元素(之前被clear()了)
arrayList2.add("西游记");
arrayList2.add("三国演义");
arrayList.addAll(arrayList2);//将arrayList2的所有元素添加到末尾
System.out.println("使用addAll()后的arrayList: " + arrayList);//输出:使用addAll()后的arrayList: [tom, 10, false, 21.001, 西游记, 三国演义]

// containsAll:查找多个元素是否都存在,也是返回boolean类型的值
System.out.println("arrayList" + arrayList);
System.out.println("arrayList2" + arrayList2);
System.out.println(arrayList.containsAll(arrayList2));//输出true

// removeAll:删除多个元素
arrayList.removeAll(arrayList2);
System.out.println("删除arrayList2元素后的arrayList:" + arrayList);//输出删除arrayList2元素后的arrayList:[tom, 10, false, 21.001]
}

ArrayList 使用细节

  1. ArrayList可以放任何值,包括null,并且多个
  2. ArrayList是由数组来实现的数据存储的
  3. ArrayList基本等同于Vector,除了ArrayList是线程不安全(但执行效率高),在多线程的情况下,不建议使用ArrayList

    可用debug追看一下源码