一、总览
二、集合
(1)什么是集合?
概念:对象的容器,定义了对多个对象进行操作的常用方法,可实现数组的工作。
(2)集合和数组的区别?
(a)数组长度固定,集合长度不固定。
(b)数组可以存储基本类型和引用类型,集合只能存储引用类型。
三、List实现类
(1)ArrayList
I 、特点
a) 数组结构实现,查询快,增删慢
b) 运行速率快,线程不安全
2、常用方法
(a) 创建集合并添加
//创建集合
ArrayList arrayList = new ArrayList();
//增加元素
Student s1 = new Student("赵晓东",20);
Student s2 = new Student("赵晓楠",21);
Student s3 = new Student("赵小溪",22);
Student s4 = new Student("赵晓波",23);
arrayList.add(s1);
arrayList.add(s2);
arrayList.add(s3);
arrayList.add(s4);
System.out.println("arrayList元素个数"+arrayList.size());
(b)删除元素
//删除元素
System.out.println("============删除元素==============");
arrayList.remove(s1);
System.out.println("arrayList的元素个数"+arrayList.size());
System.out.println(arrayList);
(c)遍历元素
第一种方式:使用迭代器
//1、使用迭代器
Iterator iterator = arrayList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
第二种方式:使用集合迭代器
//2、使用集合迭代器
ListIterator listIterator = arrayList.listIterator();
while (listIterator.hasPrevious()) {
listIterator.next();
}
第三种方式:使用for增强
//3、使用for增强
System.out.println("=============使用for增强===============");
for (Object stu: arrayList
) {
System.out.println(stu);
}
第四种方式:使用for循环
//4、使用For循环
for (int i = 0; i <arrayList.size() ; i++) {
System.out.println(arrayList.get(i));
}
(c)判断
System.out.println(arrayList.contains(s1));
System.out.println(arrayList.contains(s2));
System.out.println(arrayList.isEmpty());
(d)查找(查找元素所在序号)
System.out.println(arrayList.indexOf(s1));
(2)LinkedList
a) 增删快,查询慢
LinkedList的常用方法和ArrayList的一样。
(3)ArrayList和LinkedList的区别
(1)存储结构
ArrayList为数组的方式,LinkedList为链表的方式。
Array(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。Array获取数据的时间复杂度为O(1),但是要删除数据却是开销很大的,因为这需要重排数组中的所有数据。
LinkedList的是基于链表的方式,所以增删的时间复杂度为O(1),但是查询会很慢。
(2)效率不同
当随机访问List(get和set操作)时,ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。
当对数据进行增加和删除的操作(add和remove操作)时,LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。