文章目录
1. Collection 接口的超级接口
Iterable(接口):
1.含义:可迭代的
2.方法:Iterator(迭代器)
2. Collection 接口中的方法
1.add
2.size
3.addAll(collection)
把指定集合collection中所有元素添加到此集合
4.isEmpty
判断此集合是否有元素
5.clear
移除此集合中所有元素
6.contains(Object o)
判断此集合是否包含o 注意:调用的是equals方法
7.containsAll(Collection c)
此集合包含指定集合c中所有元素,则返回true 注意:包含关系
8.remove(Object o)
从此集合中移除元素o 注意:涉及对象的话,调用的是equals方法
9.removeAll(Collection c)
从此集合中移除此集合与c交集部分
10.retainAll(Collection c)
仅保留此集合与集合c的交集部分
11.equals(Object o)
比较此集合与指定对象是否相等,相当于比较两个集合元素是否一样
12.hashCode()
返回此集合的哈希值
13.toArray()
把此集合转换成 Object[ ] 并返回
13+.数组–>集合
List list = Arrays.asList(new String[]{“aa”,“bb”});
注意:
List arr = Arrays.asList(new int[]{123,456}); //此时是int数组的地址值存入集合
List arr = Arrays.asList(new Integer[]{123.456}); //这才存入的是数组的元素
14.iterator()
返回在此集合上进行迭代的迭代器
结论:向Collection接口实现类的对象中添加Object数据时,需要重写equals方法。
3. Collection 接口的子接口
3.1 List 接口(JDK1.2出现):元素有序,可重复的“动态数组”
3.1.1 List 接口的方法
1.void add(int index,Object ele):
在index位置插入ele元素
2.boolean addAll(int index,Collection eles):
从index位置开始把eles集合插入
3.Object get(int index):
获取index位置的元素
4.int indexOf(Object obj):
返回obj在集合中首次出现的位置
5.int lastIndexOf(Object obj):
返回obj在集合最后一次出现的位置
6.Object remove(int index):
移除指定index位置的元素,并返回此元素
7.Object set(int index,Object obj):
设置index位置的元素为obj
8.List subList(int fromIndex,int toIndex):
返回从fromIndex到toIndex位置的子集合
3.1.2 List 接口的实现类
1.ArrayList(实现类,JDK1.2出现)
1.介绍:作为List主要实现类;线程不安全,效率高;底层使用Object[]存储;
第一次调用add创建长度为10的Object[]数组;不够就扩容为原来的1.5倍;
2.LinkedList(实现类,JDK1.2出现)
1.介绍:底层使用双向链表存储;线程不安全;
3.Vector(实现类,JDK1.0出现)
1.介绍:作为List接口的古老实现类;线程安全,效率低;底层使用Object[]存储;
底层创建长度为10的Object[];扩容为原来的2倍;
3.1.3 List 集合的遍历
1.迭代器
2.forEach
3.普通for
3.2 Set 接口:元素无序,不可重复的“高中集合”
3.2.1 Set接口介绍
1.Set接口中没有定义新方法,Hash表+数组,底层是HashMap。
2.Set存储的无序的、不可重复的数据;HashSet为例:
1.无序性:不等于随机性。存储的数据在底层数组中并非按照数组索引顺序添加,而是根据数据的哈希值决定数据在数组中的位置。
2.不可重复性:equals进行比较,相同元素只能添加一个。3.添加元素的过程,HashSet为例
4.要求:向Set中添加的数据,其所在的类一定要重写hashCode()和equals()方法;
3.2.1 实现类 HashSet
1.介绍:作为Set主要实现类;线程不安全;可以存储null
3.2.2 实现类 LinkedHashSet
1.介绍:作为HashSet的子类;遍历其内部数据时,可以按照添加的顺序遍历;遍历效率高于HashSet;
2.底层结构:
3.2.3 实现类 TreeSet
1.介绍:可以按照添加对象的指定属性,进行排序。
1.1添加的对象只能是同一类的对象。
1.2两种排序方法:自然排序(实现Comparable接口)、定制排序(Comparator)
自然排序:比较两个对象是否相同的标准为CompareTo()返回0.不再是equals()。
定制排序:比较两个对象是否相同的标准为Compare()返回0.不再是equals()。
4. Collection 集合的遍历
4.1 迭代器方法
/*
iterator 开始指向第一个元素的前一个位置
iterator的方法:
hasNext() 判断是否有下一个元素
next() 1.指针下移,2.将下移后位置上的元素返回
remove() 可以在遍历的时候,删除集合中的元素
*/
//1.创建集合
Collection coll = new ArrayList();
//1.1添加元素。。。
//2.获取此集合的迭代器
Iterator it = coll.iterator();
//3.遍历集合
where(it.hasNext){
system.out.print(it.next);
}
4.2 增强 for 循环
//1.创建集合
Collection coll = new ArrayList();
//2.添加元素
...
//3.foreach遍历
for(Object obj : coll){
System.out.print(obj);
}
//数组也适用