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]
    

      

    学会勇敢
  • 相关阅读:
    git更新代码
    git标签
    git分支
    命令连接redis
    sql语句
    rm -rf无法删除文件解决方法
    lombda 使用记录
    centos查看磁盘空间大小
    CentOS7 防火墙Firewall常用命令
    安装rabbitmq
  • 原文地址:https://www.cnblogs.com/Sir-Lin/p/7809023.html
Copyright © 2011-2022 走看看