java 集合框架
集合出现的原因:
1.存放数量不确定的数据;
2.存放有映射关系的数据;
3.存放多种不同类型的数据(但当不使用泛型时,集合会“忘记”被扔进数据的类型,全都被当做Object对象来处理)。
集合只保存对象(实际上是保存对象的引用变量),而数组即可以保存对象,也可以保存基本类型的值,但是java支持自动装箱,即在集合直接存放基本类型数据时,自动将其转成对应对象。
集合框架的两个根借口为Collection和Map
使用技巧
需要唯一用Set
且需要指定顺序:TreeSet TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。
不需要:HashSet HashSet类按照哈希算法来存取集合中的对象,存取速度比较快
得到与存储一致的顺序:LinkedHashSet
不需要唯一用List
需要频繁增删动作用:LinkedList
不需要:ArrayList
如果涉及到堆栈、队列等操作,应该考虑用List;List的特征是其元素以线性方式存储,集合中可以存放重复对象。
对于需要快速插入,删除元素,应该使用LinkedList;在实现中采用链表数据结构。插入和删除速度快,访问速度慢。
如果需要快速随机访问元素,应该使用ArrayList。代表长度可以改变得数组。可以对元素进行随机的访问,插入与删除元素的速度慢。
如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高。
如果多个线程可能同时操作一个类,应该使用同步的类。 要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。 尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变,这就是针对抽象编程。