首先我们将它们分成两类,一类是Collection,List,Set,另一类是Map。气质List和Set是Collection的子接口。
Collection与Map比较
1.Collection只有一列(就像数组或链表一样),而Map有两列(一个是键,一个是键对应的值)。
2.Map中的键是不可以重复的,而Collection中有两个子接口(这里我们只说这四个接口,下面也一样),List是可以重复的,Set是不可以重复的。
List和Set的比较
1.不同点:
List是有序并且可重复的。其中包含LinkedList,ArrayList,Vector三个实现类。
Set是无序并且不重复的。其中包含HashSet,TreeSet两个实现类。
2.相同点:
它们都是Collection的子接口。
List和Map的比较
1.不同点
List是有序并且可重复的。其中包含LinkedList,ArrayList,Vector三个实现类。
Map是无序并且不可重复的。其中包含TreeMap和HashMap两个实现类。
Map是一个顶级接口,而List是继承的顶级接口Collection。
2.它们都是接口。
——————————————————————————————————————————————————————————————————————————
正好这会儿还有空,我想总结一下,这些接口的实现类有什么异同?
一.List接口的两个实现类LinkedList和ArrayList
LinkedList是基于链表的形式存储数据的,所以他插入删除比较快,查询比较慢,要从第一个开始索引。
ArrayList是基于数组的形式存储数据的,所以他插入删除比较慢,查询比较快。
二.Set接口的两个实现类HashSet和TreeSet
HashSet是无顺序不重复的集合,里面允许存放null
TreeSet是有序不重复的集合,里面不允许存放null(存放的时候不报错,运行时报空指针)
如下:
我们存入的顺序是badc,但是输出的顺序是abcd
三.Map的实现类HashMap,TreeMap
HashMap最多允许一条记录的键为null,允许多条记录的值为null。他不支持线程的同步,即同一时刻可以有多个线程写HashMap。
TreeMap默认按照他们的键升序排序。
输出的结果为: