java集合--ArrayList HashSet HashMap Hashtable LinkList

java集合--ArrayList HashSet HashMap Hashtable LinkList_第1张图片

List

java.util.ArrayList | LinkedList 类,List集合;   

 声明方式:List | ArrayList  []   list  = new ArrayList [< E >] (); 

    List | LinkedList [< E >]  list = new LinkedList []();    可省略不写,eclispe会有警告提示,E为合法的java数据类型

区别:ArrayList类:可变的数组集合,初始化大小为10,并允许包括 null 在内的所有元素;可以根据索引位置对集合进行快速的随机访问;插入和删除比较慢;

LinkedList类:链表结果保存对象;对插入和删除对象快速;随机访问集合中的对象效率比较低;

ArrayList中有许多对数组的操作方法,具体可查看JDK API文档

set(index, value); 修改数组下标为index的值为value;index不能超出现数组长度,否则会报数组越界(ps:与数组相同,集合的索引也是从0开始)


Set

java.util.HashSet | TreeSet类,Set集合;

        声明方式:HashSet []  hashSet = new HashSet []();   可省略不写,E为数据类型,基本数据类型和Object

区别:HashSet:实现了Set接口,默认初始容量是 16,加载因子是 0.75;由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;

特别是它不保证该顺序恒久不变;此类允许使用 null 元素。

TreeSet:实现了Set、SortedSet接口,集合遍历时,可以按照自然顺序或者指定顺序排序。

共同点:不能包含该重复对象,校验新增;

HashSet 中有很多对Map的操作方法,具体可以查看JDK API文档


Map

java.util.HashMap | TreeMap | Hashtable类,Map集合;

声明方式: HashMap []  hashMap = new HashMap [] ();   

          TreeMap []  hashMap = new TreeMap [] (); 

 Hashtable []  hashMap = new Hashtable[] ();   

区别:HashMap:是非线程安全的,HashMap的键和值都允许有null值存在,但必须保证key的唯一性;不保证映射的顺序,特别是它不保证顺序恒久不变;

默认初始容量是 11,加载因子是 0.75

TreeMap:集合的映射关系具有一定的顺序,因此添加、删除、定位的效率会差,也不允许键对象是null;

Hashtable:是线程安全的,肯定执行效率就会差些;这个里面讲的比较详细:http://blog.csdn.net/u012050154/article/details/50905364

共同点:map是存储键和值双列数据集合,但存储的数据是没有顺序的,key不能重复,value可以重复,可以通过每个key,找到其对应的value;

你可能感兴趣的:(java)