目录
一、集合是什么
1.集合是Java中提供的一种容器,可以用来存储多个数据。
二、集合的体系
1.Collection(Interface)下面有两个子接口List和Set
2.List接口下面有三个实现类:ArrayList、LinkedList、Vector
(1)Vector下面还有一个子类Stack
3.Set接口下面有两个实现类:HashSet、TreeSet
4.还有一个接口,它不属于Collection下面的子类或者是子接口
(1)这个接口是:Map
(2)Map下面有HashMap和HashTable
三、集合的帮助类
1.集合的帮助类为:Collections。
四、List集合和Set集合的区别
1.List集合里面存储的数据是可以重复的。
2.Set集合里面存储的数据是不能重复的。
五、ArrayList集合的添加,查看,修改,删除
1.添加
(1)向集合中添加一个元素
- 对象名.add()
-
ArrayList list = new ArrayList(); list.add(123); list.add(321); list.add("abc");
(2)将一个集合中的所有元素一个一个的添加到另一个集合中
- 对象名.addAll()
-
ArrayList list = new ArrayList(); list.add(123); list.add(321); list.add("abc"); ArrayList list2 = new ArrayList(); list2.add(4); list2.add(3); // 将集合中的元素一个一个添加到集合中 list.addAll(list2);
2.查看
(1)查看集合的大小
- 对象名.size()
-
ArrayList list = new ArrayList(); list.add(123); list.add(321); list.add("abc"); System.out.println(list.size()); // 3
(2)查看集合的元素,通过下标查看,和数组一样,下标从0开始
- 对象名.get()
-
ArrayList list = new ArrayList(); list.add(123); list.add(321); list.add("abc"); System.out.println(list.get(0)); // 123
3.修改集合的元素
(1)对象名.set()
ArrayList list = new ArrayList();
list.add(123);
list.add(321);
list.add("abc");
list.set(0,333); // 将下标为0的元素设置为333
4.删除
(1)删除集合中的全部内容
- 对象名.clear()
-
ArrayList list = new ArrayList(); list.add(123); list.add(321); list.add("abc"); list.clear();
(2)删除集合中的某一个内容,通过下标删除
- 对象名.remove()
-
ArrayList list = new ArrayList(); list.add(123); list.add(321); list.add("abc"); list.remove(0); // 移除下标为0的元素
(3)删除一个集合中和另一个集合相同的元素
- 对象名.removeAll()
-
ArrayList list = new ArrayList(); list.add(123); list.add(321); list.add("abc"); list.add(4); list.add(3); ArrayList list2 = new ArrayList(); list2.add(4); list2.add(3); list.removeAll(list2);
六、泛型
1.泛型可以使集合中保存的元素为同一种类型,如果类型不同则会报错
2.泛型中不能放基本数据类型,只能放引用数据类型
3.泛型的格式
ArrayList<String> list = new ArrayList<String>(); //<可以是任意的引用类型>
4.泛型的好处
(1)可以自动检测存入类型的合法性
(2)取值的时候,可以自动转型成为对应的类型
七、ArrayList集合中的常用方法
1.判断元素是否在集合中
(1)对象名.contains()
ArrayList list = new ArrayList();
list.add(123);
list.add(321);
list.add("abc");
System.out.println(list.contains("abc")); // true
2.截取集合中的元素
(1)对象名.subList()
ArrayList list = new ArrayList();
list.add(123);
list.add(321);
list.add("abc");
System.out.println(list.subList(0,2)); // 截取集合
3.判断一个集合中是否包含另一个集合
(1)对象名.containsAll()
ArrayList list = new ArrayList();
list.add(123);
list.add(321);
list.add("abc");
list.add(4);
list.add(3);
ArrayList list2 = new ArrayList();
list2.add(4);
list2.add(3);
System.out.println(list.containsAll(list2)); // true
八、List的分类
1.ArrayList
(1)ArrayList的默认容量是10,增长方式是:*3/2+1;
(2)ArrayList不能自定义增长方式,但是Vector可以;
(3)ArrayList是可变长度的数组类型;
(4)ArrayList查询块,添加慢;
2.LinkedList
(1)LinkedList是双向链表结构
(2)LinkedList添加块,查询慢
(3)LinkedList中和ArrayList不同的方法
- 添加元素到开头:对象名.addFirst()
-
LinkedList list = new LinkedList(); list.add(123); list.add(1.23); // 添加到第一位 list.addFirst(666);
- 添加元素到集合中:对象名.addLast()
-
LinkedList list = new LinkedList(); list.add(123); list.add(1.23); // 和add没区别 list.addLast(999);
- 注意:addLast() 和 add()没有区别
(4)LinkedList中常用方法
- 查找对应元素的下标
- 对象名.indexOf(元素名);
- 找到集合中的第一个元素,但是不删除这个元素
- 对象名.peek()
- peek()和peekFirst()差不多
- 找到集合中最后一个元素,但是不删除这个元素
- 对象名.peekLast()
- 找到集合中的第一个元素,删除这个元素
- 对象名.poll()
- poll()和pollFirst差不多
- 找到集合中最后一个元素,删除这个元素
- 对象名.pollFast
- 从这个集合所表示的堆栈中弹出一个元素
- 对象名.pop()
- 弹出的元素是第一个元素
- 弹出就相当于删除
- 将一个元素加入集合中
- 对象名.push(要加入的元素)
- push是将元素加入到第一个
3.Vector
(1)Vector查询慢,添加也慢,但是vector安全;
(2)Vector的默认容量为10,增长方式为:*2;
(3)Vector可以自定义增量;
(4)Vector的三个构造有什么区别;
// 创建默认容量为10的Vector对象
Vector v1 = new Vector();
System.out.println(v1.capacity()); // 10
// 创建默认容量为2的Vector对象
Vector v2 = new Vector(2);
System.out.println(v1.capacity()); // 2
// 创建默认容量为2,增量为5的Vector对象
Vector v3 = new Vector(2,5);
(5)将容量的大小变为和长度相同:对象名.trimToSize();
(6)Vector有一个子类是Stack(堆栈);