专栏首页技术学习实践Java集合collection之Set
原创

Java集合collection之Set

一、HashSet、TreeSet、LinkedHashSet区别:

1.HashSet:将元素存储在哈希表中,性能较好,但不保证迭代顺序。

package learn.collection;
import org.testng.annotations.Test;

import java.util.*;

public class hashset {
    Set<String> hashset = new HashSet<String>();
    Set<String> treeset = new TreeSet<String>();
    Set<String> linkedhashset = new LinkedHashSet<String>();

    @Test(groups = {"set"},priority = 0)
    public void addmethod(){
        hashset.add("3");
        hashset.add("e");
        hashset.add("a");
        hashset.add("1");
        hashset.add("2");
        System.out.println("hashset add 方法:"+hashset);
    }

    @Test(groups = {"set"},priority = 1)
    public void addAllmethod(){
        Set<String> newhashset = new HashSet<>();
        System.out.println("addAll方法调用前hashset:"+hashset);
        newhashset.add("a");
        newhashset.add("c");
        newhashset.add("金");
        hashset.addAll(newhashset);
        System.out.println("addAll方法调用后hashset:"+hashset);
    }

    @Test(groups = {"set"},priority = 2)
    public void containsmethod(){
        String str = "5";
        String str2 = "1";
        boolean judge = hashset.contains(str);
        boolean judge2 = hashset.contains(str2);
        if(!judge) {
            System.out.println(hashset + "不包含" + str);
        }
        if(judge2) {
            System.out.println(hashset + "包含" + str2);
        }
    }

    @Test(groups = {"set"},priority = 3)
    public void containsallmethod(){
        Set<String> newhashset = new HashSet<>();
        newhashset.add("1");
        newhashset.add("a");
        boolean judge = hashset.containsAll(newhashset);
        if(judge){
            System.out.println(hashset+"包含"+newhashset);
        }
        newhashset.add("b");
        boolean judge2 = hashset.containsAll(newhashset);
        if(judge2){
            System.out.println(hashset+"包含"+newhashset);
        }else{
            System.out.println(hashset+"不包含"+newhashset);
        }
    }

    @Test(groups = {"set"},priority = 4)
    public void removemethod(){
        System.out.println("remove方法调用前hashset:"+hashset);
        hashset.remove("b");
        System.out.println("remove方法调用后hashset:"+hashset);
        hashset.remove("a");
        System.out.println("remove方法调用后hashset:"+hashset);
    }


    @Test(groups = {"set"},priority = 5)
    public void retainmethod(){
        Set<String> newhashset = new HashSet<>();
        newhashset.add("金");
        newhashset.add("6");
        hashset.retainAll(newhashset);
        System.out.println(hashset+"调用retain方法:"+hashset);
    }
}

2.TreeSet:将元素存储在红黑树中,按元素值顺序排列,比HashSet处理较慢。

package learn.collection;
import org.testng.annotations.Test;

import java.util.Set;
import java.util.TreeSet;

public class treeset {
    private Set<String> treeset = new TreeSet<>();

    @Test(groups = {"treeset"},priority = 0)
    public void treesetmethod(){
        System.out.println("treeset add调用前"+treeset);
        treeset.add("3");
        treeset.add("b");
        treeset.add("1");
        treeset.add("a");
        treeset.add("2");
        System.out.println("treeset add调用后"+treeset);
    }
}

3.LinkedHashSet:作为哈希表实现,用链表连接元素,按元素插入顺序排列。

package learn.collection;

import org.testng.annotations.Test;

import java.util.LinkedHashSet;
import java.util.Set;

public class linkedhashset {
    Set<String> linkedhashset = new LinkedHashSet<>();

    @Test(groups = {"linkedhashset"},priority = 0)
    public void treesetmethod(){
        System.out.println("linkedhashset add调用前"+linkedhashset);
        linkedhashset.add("3");
        linkedhashset.add("b");
        linkedhashset.add("1");
        linkedhashset.add("a");
        linkedhashset.add("2");
        System.out.println("linkedhashset add调用后"+linkedhashset);
    }
}

扩展知识:

接口、接口继承

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 域名解析

    金GoS
  • collection之map

    金GoS
  • 线程

    金GoS
  • 主定理与时间复杂度

    只好在网上找了一篇看起来不怎么严谨的博客,不过算出来的是对的?那就默认是对的吧qwq

    attack
  • 服! 买不起2.6亿一只的加密猫, 他用10分钟"生"了一窝!

    不知道多少人和营长一样,在结束一天的工作后,就想瘫在沙发上玩玩游戏,一扫一天的疲惫。不过现在的游戏都越来越氪金了,就像玩家们常说的:不充钱你怎么能变强!!!

    区块链大本营
  • 云开发实战分享|诗和远方:旅行小账本云开发

    最近沉迷小程序开发,发现了一款功能、界面、体验俱佳的小程序“旅行小账本”。着手做了个简约版——"旅行小账本"。效果比较满意,毕竟前后台一人单干。

    腾讯云开发TCB
  • 看看你知道的“浅拷贝”是对的吗

    关于本篇文章的起源是一位大佬在面试的时候,询问应聘者关于浅拷贝的知识后,在应聘者的回答中,笔者发现有好一部分人对浅拷贝都是错误的,故有了此篇内容。

    用户1462769
  • Shell的字符串处理

    在Shell编程快速入门指南一文中已经简单介绍了字符串的变量命名、截取、获取长度等操作,但通常我们对字符串的操作的需求远远不止这些,Shell本身一起已经内置了...

    用户1515472
  • 事件模型

     事件模型如何理解呢,举个例子,你老婆出门了,让你在家看孩子,难道你每过一分钟就去看一次孩子吗,对于计算机来说,我做一个按钮,难道就一直监听这个按钮使用没有...

    mathor
  • Java HashSet

    HashSet继承自AbstractSet,实现了Set接口、Cloneable、Serializable接口。

扫码关注云+社区

领取腾讯云代金券