@frank-shaw
2015-10-29T11:12:24.000000Z
字数 1313
阅读 2076
java.集合
1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;
2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:
Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。
3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。
1、java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
Collection
├List(可重复)
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set(不可重复)
2、java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化(直接用类名调用),就像一个工具类,服务于Java的Collection框架。服务于所有Collection对象,方便一些,相当于一些可以直接用的工具。以后要记得有可能的话要使用这些东西。
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问(查找) get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针才能够找到被访问对象。
3.关于add:当add操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。
4.(空间复杂度分析)ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间(可以使用trimToSize方法在ArrayList分配完毕之后去掉多余的空间),而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。
--看来不能够简单地就这样子认为是顺序存储和链式存储的区别啊。long way to run~!