Java集合框架类

在日常的项目中我们会经常用到的一些集合框架,有时候会用,是感觉理论掌握的不不够,为此做一下浅层次的总结:

java的java.utils包下为我们提供了一系列的工具,包含集合框架,遗留的Collection,日期时间和各种的工具类:

Collection接口实际上一个标准的泛型接口,它的实现子接口位List,和Set

List实现了Collection接口,List中运行有重复的类,所以List拥有Collection接口提供的所有常用方法,又因为List是列表类型,所以List还提供了适合自身的常用方法:

List 接口的实现类

ArrayList:

ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处,ArrayList是随机存储所以它的访问速度比LinkList快:

动态的增加和减少元素实现了ICollection和IList接口 灵活的设置数组的大小

list常用的方法:

LinkedList:


是通过节点彼此直接连接来实现的,就是双向链表,每个节点都包含前一个节点的引用,和节点存储的值,当一个新的节点插入时,只需修改其中保持先后节点的关系即可。

不同点:

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

可以这样说:当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

Map:

(1)概述:HashMap底层是用哈希表实现的Map结构,即数据的存储形式都是以键值对(key,value)来存储的。其中,key的值不能重复,value则可以。HashMap是无序的。HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。,但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load factor过低。(2)支持的操作:增——put(key,value),删——remove(key),查——get(key)。此外,entrySet()方法返回此映射中包含的映射关系的 Set 视图。keySet()方法返回此映射中包含的键的 Set 视图。values()方法返回此映射中包含的值的 Collection 视图。TreeMap(1) 概述:TreeMap的用法与HashMap类似,但TreeMap支持排序。TreeMap是基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。

HashMap 和 HashTable的区别:

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

要愈合不能,要忘却不能,要再次拥抱,却鼓不起足够的勇气,

Java集合框架类

相关文章:

你感兴趣的文章:

标签云: