当前位置:文档之家› java中的各种集合比较

java中的各种集合比较

Set java.util.Set; 继承了Collection接口
HashSet java.util.HashSet; 来自Set接口

Map java.util.Map;
Hashtable java.util.Hashtable; 来自Map接口
HashMap java.util.HashMap; 来自Map接口

List java.util.List 继承了Collection接口
ArrayList java.util.ArrayList; 来自List接口
LinkedList java.util.LinkedList 来自List接口
Vector java.util.vector 来自List接口

HashSet,来自Set接口,不允许值重复,当插入已有的值的时候会把之前的值覆盖掉 HashSet不能直接便利要先转换为数组等可以直接遍历的集合

HashTable,来自Map接口,无序集合,键值重复时,会把之前的覆盖掉 HashTable是(线程)同步的,安全,但是速度不如HashMap快


HashMap,来自Map接口,无序集合,键值重复时,会把之前的覆盖掉 HashMap没有同步,不如HashTable安全,但是速度比HashTable快 HashMap和HashTable最大的区别就是HashTable的键和值都不允许为null HashMap允许一个键和多个值为null。HashMap去掉了HashTable的contains()方法。

ArrayList,来自List接口,有序集合,允许值重复,遍历速度快,插入和更新稍慢(因为每次更改都会排序) 可以存放任何类型的值,null除外,,ArrayList只提供一维的形式,没有同步,不如Vector安全


Vector,来自List接口,有序集合,和ArrayList大致相同,只是同步了,所以比ArrayList慢,比ArrayList安全

LinkedList,来自List接口,有序集合,使用双向链表实现存储,插入和更新数据快(插入记录时只需记录本项的前后项即可),遍历稍慢,允许在最初和最后插入或删除元素




/**
* List接口继承了Collection接口
* Set接口继承了Collection接口
* Map是一个接口没有继承任何接口
*/


/**
* HashSet,来自Set接口,不允许值重复,当插入已有的值的时候会把之前的值覆盖掉
* HashSet不能直接便利要先转换为数组等可以直接遍历的集合
*/
Set set =new HashSet();
set.add("a");
set.add("b");
set.add("c");
if (set.contains("a")) {
System.out.println("a已经有啦...");
}else {
set.add("a");
}

Object[] obj=set.toArray();
for (int i = 0; i < obj.length; i++) {
System.out.println(obj[i]);
}

/**
* HashTable,来自Map接口,无序集合,键值重复时,会把之前的覆盖掉
* HashTable是(线程)同步的,安全,但是速度不如HashMap快
*/
Map hashTable=new Hashtable();
hashTable.put("", "a");
hashTable.put("", "");
for (int i = 0; i < hashTable.size(); i++) {
System.out.println("hashTable的值:"+hashTable.get(""));
}

/**
* HashMap,来自Map接口,无序集合,键值重复时,会把之前的覆盖掉
* HashMap没有同步,不如HashTable安全,但是速度比HashTable快
* HashMap和HashTable最大的区别就是HashTable的

键和值都不允许为null
* HashMap允许一个键和多个值为null
*/
Map hashMap=new HashMap();
hashMap.put(null, "啊啊");
hashMap.put(null, null);
hashMap.put("", null);

System.out.println("hashMap的值"+hashMap.get(null));
System.out.println("hashMap的值"+hashMap.get(""));


/**
* ArrayList,来自List接口,有序集合,允许值重复,方便遍历
* 可以存放任何类型的值,null除外,存取速度快,但是没有同步不如Vector安全
*/
List list=new ArrayList();
list.add("d");
list.add("e");
list.add("f");
list.add("d");

for (int i = 0; i < list.size(); i++) {
System.out.println("list"+i+"的值是:"+list.get(i).toString());
}

/**
* Vector,来自List接口,有序集合,不允许有null值
* 是同步的,安全,其它和ArrayList大致相同
*/
List vector=new Vector();
vector.add("C");
vector.add("D");
vector.add("E");
for (int i = 0; i < vector.size(); i++) {
System.out.println("vector的值:"+vector.get(i).toString());
}

/**
* LinkedList,来自List接口,有序集合,和ArrayList类似
* 允许在最初和最后插入或删除元素
*/
LinkedList link=new LinkedList();
link.add("B");
link.add("C");
link.addFirst("A");
link.addLast("D");

for (int i = 0; i < link.size(); i++) {
String a=link.get(i);
System.out.println("linkedList的值:"+a);
}

相关主题
文本预览
相关文档 最新文档