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则不需要

     

  • 相关阅读:
    c# 泛型总结
    透过字节码分析java基本类型数组的内存分配方式。
    c#索引器
    redis在asp.net 中的应用
    Unity3D shaderLab
    Unity3d Asset Store 打不开
    C# 类型转换的开销
    [转]权重算法
    Coroutine的原理以及实现
    在Unity3D里使用WinForm
  • 原文地址:https://www.cnblogs.com/corolcorona/p/6683144.html
Copyright © 2011-2022 走看看