0、用了这么久,总是用ArrayList,List,也没好好总结一下,感觉挺打脸,没办法,你知道工作的,总是用啊用
1、我们经常需要存放多个数据(元素),所以就有需求了,就像容器一样
a、集合类也被称作容器类
b、一部分的集合类是位于java.util包下,这些类全部是单线程下使用的哦
c、在java1.5的时候,在java.util.concurrent包又提供了一些支持多线程的集合类
2、主要分类
a、Collection为首,然后扩展处一堆
b、Map,又扩展出一堆
3、Collection的基本层次关系
a、Iterable, Collection扩展了该interface,凡是实现了Iterable的,允许使用foreach进行遍历,这点很重要
我们常说类实现了Iterable,这里Collection也是interface,Collection扩展了Iterable,所以类实现了Collection,即相当于实现了Iterable
这个Iterable有一个抽象方法,叫做iterator(),还有两个default方法。
Iterable是一个范型interface
//注意我把所有注释和package、import全部删除掉了
public interface Iterable<T> {
Iterator<T> iterator();
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
default Spliterator<T> spliterator() {
return Spliterators.spliteratorUnknownSize(iterator(), 0);
}
}
b、Collection是集合基本的interface,定义的规则里,可以持有多个Object,每个Object也被称为元素
c、List是Collection中最重要的扩展interface,List扩展了Collection,元素为有序(比如你每次遍历时,都与最初保存元素的顺序一致),元素可以重复,即可以有相同的实例对象,默认情况下,按照添加元素的顺序分配下标,比如第一个元素的元素是0,因为是在线性表尾部进行插入的嘛。
d、Set也是Collection下最重要的扩展interface,Set也扩展了Collection,代表一个集合,简单理解为一个大水缸,放入元素的时候是完全没有顺序的,也就是说你每次遍历时,跟你放入元素的顺序无关,跟你各种访问元素的顺序无关,而且Set中不允许放入重复的元素
e、Queue又是一个扩展Collection的接口,一个队列,牛13,在元素上,主要的要求是FIFO(First in First out),只要队列的要求,即只能从队列头部出列(出队)、队列的尾部入列(入队),即可,元素当然可以重复。牛13
4、Map的基本层次关系
a、先再介绍下Map,key-value元素,即映射关系元素,Map中的key不能重复,如果重复了,那就覆盖了
b、Map中的value可以重复,这是自然的了
c、Map中的key、value可以为null,可以是任意类型的对象,必须是引用数据类型,基本数据类型不行
d、HashSet、是基于哈希表实现的Set
e、先介绍到这里吧,每个分类再开个大项来介绍吧