Java中HashSet、LinkedHashSet、TreeSet的区别

导读:本篇文章讲解 Java中HashSet、LinkedHashSet、TreeSet的区别,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

set集合是不包含重复元素的 collection

HashSet

它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。

添加的null元素

LinkedHashSet

HashSet的子类,它具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。此实现与 HashSet 的不同之外在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,即按照将元素插入到 set 中的顺序(插入顺序)进行迭代。注意,插入顺序 受在 set 中重新插入的 元素的影响。

添加的null元素

TreeSet

使用元素的自然顺序对元素进行排序,引用数据类型使用比较器(Comparator)

排序:数字 ==> 英文(忽略大小写) ==> 中文

不可以添加的null元素,不然会java.lang.NullPointerException

package com.wgp.demo01;

import java.util.*;

/**
 * 使用LinkedHashSet,存储以下元素:"王昭君","王昭君","西施" "杨玉环","貂蝉"。
 * 使用迭代器和增强 for循环遍历LimkedHashSet。
 *
 * Set 一个不包含重复元素的 collection
 */
public class Test01 {
    public static void main(String[] args) {
        //LinkedHashSet 可预知迭代顺序
        Set<String> linkedHashSet=new LinkedHashSet<>();
        Collections.addAll(linkedHashSet,"王昭君","王昭君","西施","杨玉环","貂蝉");
        linkedHashSet.add(null);
        System.out.println(linkedHashSet);//[王昭君, 西施, 杨玉环, 貂蝉]

        //HashSet 不可预知迭代顺序,不保证该顺序恒久不变
        Set<String> set=new HashSet<>();
        Collections.addAll(set,"王昭君","王昭君","西施","杨玉环","貂蝉");
        set.add(null);
        System.out.println(set);//[貂蝉, 王昭君, 杨玉环, 西施]

        //TreeSet 按照自然顺序排序,引用数据类型使用Comparator比较器
        //数字==>英文(忽略大小写)==>中文
        Set<String> treeSet=new TreeSet<>();
        Collections.addAll(treeSet,"f","g","d","b","A","e","c","李四","张三","12","10");
        treeSet.add(null);
        System.out.println(treeSet);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/14623.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!