[转帖]java中的各种集合比较_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3661 | 回复: 0   主题: [转帖]java中的各种集合比较        下一篇 
yuyanzheng
注册用户
等级:下士
经验:176
发帖:9
精华:0
注册:2013-1-31
状态:离线
发送短消息息给yuyanzheng 加好友    发送短消息息给yuyanzheng 发消息
发表于: IP:您无权察看 2013-2-1 15:04:44 | [全部帖] [楼主帖] 楼主

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<String> link=new LinkedList<String>();
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);
}




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论