zoukankan      html  css  js  c++  java
  • java中集合类HashSet、ArrayList、LinkedList总结

    【HashSet】

    1. HashSet存储不能够存储相同的元素,元素是否相同的判断:重写元素的equals方法。equals方法和hashCode方法必须兼容,如:equals方法判断的是用户的名字name,那么hashCode的返回的hashcode必须是name。hashcode();

    2. HashSet存储是无序的,保存的顺序与添加的顺序是不一致的,它不是线性结构,而是散列结构,(通过散列表:散列单元指向链表)。因此,HashSet的查询效率相对比较高。

    3. HashSet不是线程安全的,不是线程同步的。这需要自己实现线程同步:Collections.synchronizedCollection(),方法实现。

    【ArrayList】

    1. 不是线程安全的,不是线程同步的。

    2.ArrayList是通过可变大小的数组实现的,允许null在内的所有元素。

    3.ArrayList中存放顺序和添加顺序是一致的。并且可重复元素。

    4.ArrayList适合通过位子来读取元素。

    【LinkedList】

    1.不是线程安全的,不是线程同步的。

    2.LinkedList是通过双向循环链表来实现的。

    3.存放顺序和添加顺序是一致的。可添加重复元素。

    4.适合链表头尾操作和插入指定位置元素的操作。

    ArrayList和LinkedList之间的数据传递可通过toArray()方法。

    【HashMap】

    1.非线程安全,不是线程同步。

    2.添加顺序和保存的顺序是不一致的。

    3.必须重写key的equals方法和hashCode方法。

    4.HashMap的实际容量=容量*因子,默认为16*0.75=12.所以考虑到HashMap的添加的效率问题,根据实际情况来设计它的开始的默认的容量。

    的操作方法根据api来查找。

    5.添加的值中是允许有null的值存在的。

    【Hashtable】

    1.是线程安全的,是线程同步的,在实现线程同步的时候是不需要手动来实现线程同步的。因此相对效率低。

    2.添加的顺序和保存的顺序是不一致的。

    3.添加的值中是不允许有null值存在的。

    【TreeMap】

    1.非线程安全,不是线程同步的。在必要的情况下必手动实现线程同步。

    2.在元素的添加,删除和定位映射中效率相对hashMap较低。但是在排序方面TreeMap比较实用。

    3.添加的值中允许有null值,但是在输出的时候会报空指针异常。

    以上信息并非原创,仅作收藏学习用。

  • 相关阅读:
    基于Karma和Jasmine的angular自动化单元测试
    【转】使用SVG中的Symbol元素制作Icon
    【转】整理分析:Before 和 :After及其实例
    【转载】CSS中强大的EM
    【转】提升说服力!UI设计的心理学
    解决IE8不支持数组的indexOf方法
    KISSY Slide 组件应用遇到的一个放大缩小问题
    jQuery.extend 函数详解(转载)
    事件冒泡分析及return false、preventDefault、stopPropagation的区别
    jquery学习(一)-选择器
  • 原文地址:https://www.cnblogs.com/nsw2018/p/5821199.html
Copyright © 2011-2022 走看看