一.HashSet与TreeSet的异同:
相同点:都实现了set接口,元素不会重复,插入重复的对象会覆盖掉。
不同点:
1.HashSet 是哈希表实现的,无序的集合;可以放入null,但只能放入一个null,两者中的值都不能重复;HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的
2.TreeSet 是红黑树实现的,排序的集合,数据是自动排好序的(元素对象必须实现
Comparable接口),不允许放入null值。
二.ArrayList 与Vector的异同:
相同点:ArrayList和Vector都实现了List接口,保存插入的顺序,允许重复。低层都封装了一个一维对象数组,默认初始容量都为10,List接口中如果加入的元素数量大于低层数组长度时,低层数组就会重新创建elementData =Arrays.copyOf(elementData, newCapacity);
都可以使用iterator进行迭代。
不同点:
1.:Vector是同步(线程安全)的,运行效率要低一些,主要用在多线程环境中;
而ArrayList是不同步的,适合在单线程环境中使用。
Java.util.Stack类继承了Vector类,对应数据结构中以“后进先出”方式存储和操作数据的,Stack类使用vector封装的底层数组来实现的。
LinkedList此类实现了队列(Queue)接口,低层是基于链表的数据结构,以“先进先出”的方式存储和操作数据的。
三.Map结构:HashMap,Hashtable,TreeMap的异同
相同点:HashMap和Hashtabel低层是基于hash表来实现键—值映射结构的;
Hashtable与HashMap的用法格式完全相同。
不同点:
1)。Hashtable中元素的键和值均不允许为null,而HashMap则允许。
2)。Hashtable是同步的,即线程安全的,效率相对要低一些,适合在多线程环境下使用;而HashMap是不同步的,效率相对高一些,提倡在单线程环境中使用。
3)。HashMap的默认初始容量是16,加载因子是0.75,
Hashtable的默认初始容量是11,加载因子是0.75.
Properties
类继承Hashtable类,表示了一个持久的属性集。Properties
可保存在流中或从流中加载。
TreeMap:实现了SortedMap接口(基于红黑树的实现)。构造一个新的空映射,该映射按照键的自然顺序排序。插入该映射的所有键必须实现Comparable接口 ;
自动升序排序。
总结一下:HashMap除了不同步和允许使用 null 之外,HashMap类与Hashtable大致相同
原文地址:http://6817977.blog.51cto.com/6807977/1619508