先上图看得直观点:
从上图很明显可以看出List集合和Set集合均继承自Collection接口,但是Map是独立的,并且他们都是import java.util.List/Set/Map;
1.List (L是重点,圈起来会考)
从文档中我们可以看到List是有序的集合也称为序列(L)。
这里给大家抽象个快速牢记的办法:
List集合有序可重复,上体育课的时候老师是不是会让我们排好队。来晚的童鞋也要排好队,我们有好多个同学不是一个是不是。童鞋们是不是要有序的排成2队男女各一队。然后老师吹着哨子喊道:立(L)正!稍(S)息。脑子里有没有画面?下次想到List就会自然而然就会想到上PE课。
so ,List下常用的实现类:ArrayList,LinkedList,Vector 是不是都有是有序可重复的? OK 下面我们来具体了解ArrayList。
1.1、ArrayList
ArrayList的底层数据结构是数组,查询快,增删慢。
可以把ArrayList想象成体育委员,老师查人数的时候他不可能每个同学都记住名字是不是?但是体育委员都认识你们呀,瞄一眼就知道哪个同学没来是不是?如果老师要查点人数,是不是要一个一个点名再对号。有时候人没点完就下课了。哈哈
至于线程不安全,如上图,ArrayList是非同步的,自然不安全。效率高仅限查询效率。
ArrayList总结:
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高。
1.2、LinkedList
同样:LinkedList也是非同步的,自然也不安全。效率高仅限增删操作。
举个栗子:围绕操场跑步的时候都是体育委员在一侧领着大家跑操场的,如果老师让他归队,不管他站到谁在后面,他后面的同学是不是都要后移一个位置?但是如果他直接去最后一个同学那是不是大家都不要换位置了。OK
LinkedList总结:
优点: 底层数据结构是链表(双向链表),查询慢,增删快。
缺点: 线程不安全,效率高
1.3、Vector