zoukankan      html  css  js  c++  java
  • Java集合的区别和选择

    1.List      有序,可重复

                   ArrayList:底层数据结构是数组,查询快,增删慢。线程不安全,效率高

                   Vector:底层数据结构是数组,查询快,增删慢。线程安全,效率低

                   LinkedList:底层数据结构是链表,查询慢,增删快。线程不安全,效率高

    2.Set       唯一(Set判断两个对象相同是根据equals方法)

                   HashSet:底层数据结构是哈希表。 无序唯一,如何保证元素唯一性的呢?依赖两个方法:hashCode()和equals()开发中自动生成这两个方法即可

                   LinkedHashSet:底层数据结构是链表+哈希表,有序(插入顺序)唯一,由链表保证元素有序,由哈希表保证元素唯一

                   TreeSet:底层数据结构是红黑树。有序(元素升序)唯一,如何保证元素排序的呢?自然排序比较器排序 如何保证元素唯一性的呢?根据比较的返回值是否是0来决定

    3.Map      键值对

                   HashMap:底层是哈希表数据结构,无序,最多只允许一条记录的键为Null;允许多条记录的值为 Null,线程不安全

                   Hashtable:不允许记录的键或者值为空,线程安全

                   LinkedHashMap:按照记录的插入顺序,

                   TreeMap:底层是二叉树数据结,按照键排序,默认是按键值的升序排序,线程不安全

    //排序
    Iterator it = hsMap.entrySet().iterator();  
    while (it.hasNext()) {  
    Map.Entry e = (Map.Entry) it.next();  
    System.out.println("Key: " + e.getKey() + "--Value: "  
    + e.getValue());  
    }  

     keySet是键的集合,Set里面的类型即key的类型

    entrySet是 键-值 对的集合,Set里面的类型是Map.Entry

    使用entrySet则必须将map对象转换为Map.Entry,keySet则不需要

     

  • 相关阅读:
    Idea打包问题
    centos问题总结
    Linux CentOS7 系统目录详解
    centos下修改文件后如何保存退出
    利用windows上的VMware安装CentOS7
    VMware安装系统出现Operating System not found 解决方案
    mybatis 0 变成null问题
    Shiro权限前端调用302重定向
    java版本
    产品画原型工具放入到托管平台
  • 原文地址:https://www.cnblogs.com/corolcorona/p/6683144.html
Copyright © 2011-2022 走看看