zoukankan      html  css  js  c++  java
  • TreeSet, LinkedHashSet and HashSet 的区别

    1. 介绍

    TreeSet, LinkedHashSet and HashSet 在java中都是实现Set的数据结构

    # TreeSet的主要功能用于排序

    # LinkedHashSet的主要功能用于保证FIFO即有序的集合(先进先出)

    # HashSet只是通用的存储数据的集合

    2. 相同点

    1) Duplicates elements: 因为三者都实现Set interface,所以三者都不包含duplicate elements

    2)Thread safety: 三者都不是线程安全的,如果要使用线程安全可以用 Collections.synchronizedSet()

    3. 不同点

    1)Performance and Speed: HashSet插入数据最快,其次LinkHashSet,最慢的是TreeSet因为内部实现排序

    2)Ordering: HashSet不保证有序,LinkHashSet保证FIFO即按插入顺序排序,TreeSet安装内部实现排序,也可以自定义排序规则

    3)null: HashSet和LinkHashSet允许存在null数据,但是TreeSet中插入null数据时会报NullPointerException

    4. 代码比较

    public class Test {
        public static void main(String args[]) {
            HashSet<String> hashSet = new HashSet<>();
            LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
            TreeSet<String> treeSet = new TreeSet<>();
    
            for (String data : Arrays.asList("B", "E", "D", "C", "A")) {
                hashSet.add(data);
                linkedHashSet.add(data);
                treeSet.add(data);
            }
    
            //不保证有序
            System.out.println("Ordering in HashSet :" + hashSet);
    
            //FIFO保证安装插入顺序排序
            System.err.println("Order of element in LinkedHashSet :" + linkedHashSet);
    
            //内部实现排序
            System.out.println("Order of objects in TreeSet :" + treeSet);
    
    
        }
    }
    

    output:

    Order of element in LinkedHashSet :[B, E, D, C, A]
    Ordering in HashSet :[C, B, A, D, E]
    Order of objects in TreeSet :[A, B, C, D, E]
    

      

    学会勇敢
  • 相关阅读:
    php 实现店铺装修3
    脸如何瘦
    第一次约会看电影的细节 了解好男人的标准看他是否合格
    14细节 看男人爱你到什么程度:第一次约会时他沉默寡言
    男生第一次约会穿什么?
    提高心理素质 2
    心理素质差的原因
    如何提高心理素质
    不适合做老婆的女人,五大特质(转载)
    心理素质差的表现
  • 原文地址:https://www.cnblogs.com/Sir-Lin/p/7809023.html
Copyright © 2011-2022 走看看