zoukankan      html  css  js  c++  java
  • Java集合类学习笔记(Set集合)

    Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。

     

    HashSet类的特点:

    • 不能保证元素的排列顺序,顺序可能与添加顺序不同,也有可能发生变化。
    • HashSet不是同步的,如果多个线程同时访问并修改一个HashSet时,必须保证其同步。
    • 元素值可以是null。

     

    LinkedHashSet类的特点:

    是HashSet类的子类,它根据元素的hashCode值来决定元素的存储位置,但同时使用链表维护元素的次序。

     

    TreeSet类的特点:

    是SortedSet接口的实现类,可以确保集合元素处于排序状态。

     

    EnumSet类的特点:

    是一个专为枚举类设计的集合类,其中的所有元素都必须是指定枚举类型的枚举值。

    集合元素是有序的,以枚举值在Enum类内的定义顺序来决定集合元素的顺序。

    不允许插入null元素,否则会抛出NullPointerException。

     

     

    各Set实现类的性能分析:

    HashSet的性能总是比TreeSet好(特别是最常用的添加、查询元素等操作)。

    LinkedHashSet比HashSet要略微慢一点,这是由于维护链表所带来的额外开销造成的。

    EnumSet是所有Set实现类中性能最好的,但它只能保存同一个枚举类的枚举值作为集合元素

     

    Set的三个实现类HashSet、TreeSet、EnumSet都不是线程安全的,可以通过Collections工具类的synchronizedSortedSet方法来“包装”该Set集合。此操作最好在创建时进行,以防对Set集合的意外非同步访问。

     

  • 相关阅读:
    C# 中数组、ArrayList、List<T> 区别
    启动SourceNavigator出错(问题解决)
    (转)SlickEdit软件使用
    ubuntu操作记录
    ubuntu下安装Source Insight
    Android中对于没有Looper的类,要使用Toast的问题
    (转)ubuntu下安装source navigator
    (转)深入理解之 Android Handler(相当好!!!)
    Git常用命令及思维导图
    (转)android的消息处理机制(图+源码分析)——Looper,Handler,Message
  • 原文地址:https://www.cnblogs.com/microyum/p/5383676.html
Copyright © 2011-2022 走看看