Java基础系列(二)

集合

一、Java集合构架支持三种类型的集合:规则集(set)、线性表(list)和图(map),它们分别定义在接口
Set 、List与 Map 中。 Set 的实例存储一组互不相同的元素,List 的实例存储一组顺序排列的元素,Map的实例存储一组对象,每个对象都有一个关联的键值。

在这里插入图片描述
map

Collection***************************************************************

在这里插入图片描述
注:addAll 、removeAll 、retainAll 方法与集合的并、差、交运算类似。
HashSet、LinkedHashSet和TreeSet
这三个类都是实现了Set接口的,所以此三个集合中的元素都是不同的。
HashSet是最基本的,
LinkedHashSet是按元素插入的顺序进行存储,
TreeHashSet中的元素总是保持元素的大小关系,所以添加到树形集中的元素必须是可比较的
TreeSet可以由HashSet对象构造,相当于把HashSet集合排序。
TreeSet还可以用实现了Comparator的实例构建,实例中compare参数可以接受的类型都可以放到集合中。
在没有特别需要时,最好选择HashSet,因为HashSet简单,效率高

ArrayList、LinkedList和Vector。
ArrayList相当于数组,LinkedList相当于链表
若要提取元素以及在线性表的尾部插入或删除元素, ArrayList 是高效的。
若要在线性表的任意位置上插入和删除元素, LinkedList 的运行效率要高一些。
Vector就是同步的ArrayList

Map******************************************************

在这里插入图片描述

HashMap、LinkedHashMap和TreeMap
同上。

总结
●如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,
如果需要快速随机访问元素,应该使用ArrayList。

●如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,
如果多个线程可能同时操作一个类,应该使用同步的类。

●要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。

●尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,
客户端代码不用改变。这就是针对抽象编程。

猜你喜欢

转载自blog.csdn.net/qq_22038259/article/details/82972974