Set集合类详解(附加思维导图)

news2024/11/23 11:10:46

目录

一、Set集合思维导图

 二、set集合类常用方法

2.1、HashSet集合常用方法

2.2、TreeSet集合的使用

三、HashSet、LinkedHashSet、TreeSet的使用场景

四、list和set集合的区别


一、Set集合思维导图

 二、set集合类常用方法

2.1、HashSet集合常用方法

①:add(Object o):向Set集合中添加元素,不允许添加重复数据。

②:size():返回Set集合中的元素个数

public class Test {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>(); //调用HashSet无参构造方法——>创建HashMap对象并给map全局变量。
        set.add("你好");
        set.add("世界");
        System.out.println(set);
        System.out.println(set.size());
    }
}

注意:不会按照保存的顺序存储数据(顺序不定),遍历时不能保证下次结果和上次相同。且向HashSet集合中添加元素,HashSet add方法实质是map全局变量调用了put方法,将数据存到了key,因为HashMap的 key不允许,所以HashSet添加的元素也不允许重复。

③.remove(Object o): 删除Set集合中的obj对象,删除成功返回true,否则返回false。

④.isEmpty():如果Set不包含元素,则返回 true。

public class Test {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("你好");
        set.add("世界");
        System.out.println(set.isEmpty());
        System.out.println(set.remove("世界"));
        System.out.println(set);
    }
}

⑤.clear(): 移除此Set中的所有元素。

public class Test {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("你好");
        set.add("世界");
        System.out.println(set);
        set.clear();
        System.out.println(set);
    }
}

⑥.iterator():返回在此Set中的元素上进行迭代的迭代器。

public static void main(String[] args) {
    HashSet<String> set = new HashSet<String>();
    set.add("你好");
    set.add("世界");
    Iterator<String> ite =set.iterator();
    while(ite.hasNext())
    {
        System.out.println(ite.next());
    }
}

⑦.contains(Object o):判断集合中是否包含obj元素。

public class Test {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("你好");
        set.add("世界");
        System.out.println(set.contains("你好"));
    }
}

⑧:加强for循环遍历Set集合:

public class Test {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("你好");
        set.add("世界");
        for (String name : set) {   //使用foreach进行遍历。
            System.out.println(name);
        }
    }
}

2.2、TreeSet集合的使用

①.插入是按字典序排序的

public class Test {
    public static void main(String[] args) {
        TreeSet ts=new TreeSet();
        ts.add("agg");
        ts.add("abcd");
        ts.add("ffas");
        Iterator it=ts.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

输出 : 按照字典序排序的方式进行排序

abcd
agg
ffas

②.如果插入的是自定义对象 需要让类实现 Comparable 接口并且必须要重写compareTo

class Person implements Comparable{
    
    String name;
    int age;
    Person(String name,int age)
    {
        this.name=name;
        this.age=age;
    }

    @Override
    public int compareTo(Object o) {
        Person p=(Person)o;
        //先对姓名字典序比较 如果相同 比较年龄
        if(this.name.compareTo(p.name)!=0) {
            return this.name.compareTo(p.name);
        }
        else
        {
            if(this.age>p.age) return 1;
            else if(this.age<p.age) return -1;
        }
        return 0;
    }

}

public class Test {
    public static void main(String args[])
    {
        TreeSet ts=new TreeSet();
        ts.add(new Person("agg",21));
        ts.add(new Person("abcd",12));
        ts.add(new Person("ffas",8));
        ts.add(new Person("agg",12));
        Iterator it=ts.iterator();
        while(it.hasNext())
        {
            Person p=(Person)it.next();
            System.out.println(p.name+":"+p.age);
        }
    }
}

输出

abcd:12
agg:12
agg:21
ffas:8

三、HashSet、LinkedHashSet、TreeSet的使用场景

  • HashSet:HashSet的性能基本上比LinkedHashSet和TreeSet要好,特别是添加和查询,这也是用的最多的两个操作
  • LinkedHashSet:LinkedHashSet的查询稍慢一些,但是他可以维持元素的添加顺序。所以只有要求当插入顺序和取出顺序一致的时候 才使用LinkedHashSet。
  • TreeSet:只有在需要对元素进行排序时使用

四、list和set集合的区别

0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/786938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker安装Elasticsearch相关软件安装

Docker安装Elasticsearch相关软件安装 本文将介绍通过 Docker 的方式安装 Elasticsearch 相关的软件。 1、Docker安装Elasticsearch 1.1 搜索镜像 $ docker search elasticsearch $ docker search elasticsearch:7.12.11.2 拉取镜像 $ docker pull elasticsearch:7.12.11.…

# jellyfin安装设置使用散记

jellyfin安装设置使用散记 文章目录 jellyfin安装设置使用散记0 软件简介1 安装2 视频转码问题2.1 局域网转码情况测试&#xff08;不同网段&#xff09;2.2 局域网jellyfin app默认转码问题解决2.3 外网转码情况测试 3 一些坑4 插件5 最后 0 软件简介 Jellyfin 是一个自由的软…

ConcurrentHashMap 相比于 HashMap 的优势

ConcurrentHashMap 使用每个链表头节点作为锁对象, 把一把大锁转换成多把小锁, 大大缩小了锁冲突的概率 HashTable 是给整个 Hash 表加锁, 因此只要有线程抢到了锁其他线程就得阻塞等待. ConcurrentHashMap 是对每个链表加锁, 因此只要不是对同一个链表进行修改就不会阻塞, 大…

linux 查看网卡,网络情况

1&#xff0c;使用nload命令查看 #yum -y install nload 2&#xff0c; 查看eth0网卡网络情况 #nload eth0 Incoming也就是进入网卡的流量&#xff0c;Outgoing&#xff0c;也就是从这块网卡出去的流量&#xff0c;每一部分都有下面几个。 – Curr&#xff1a;当前流量 – Avg…

vue中重新获取数据导致页面加长,要求在页面更新之后浏览器滚动条滚动到之前浏览记录的位置。以及获取当前页面中是哪个元素产生滚动条的方法。

目前的页面样式为&#xff1a; 代码是&#xff1a; <section id"detailSection"><el-tableref"multipleTable":data"logDetailList"style"width: 650px;margin:20px auto;"id"dialogDetail":show-header"fals…

13 QT资源文件导入

导入资源: 1&#xff1a;将资源文件放入到项目目录下 2&#xff1a;添加资源文件 2.1&#xff1a;右键项目->添加新文件->Qt->Qt Resource file ->给资源文件命名 ex: res ->生成res.qrc 3&#xff1a;编辑资源文件 3.1&#xff1a;添加前缀 3.2&#xff1a;…

荧光效率的测试原理-荧光量子效率测试系统

荧光染料是一种新型染料,它既有常规染料的着色特性,又能发射出荧光,使得织物的饱和度和鲜艳度提高,广泛用于纺织、服装等领域。目前,荧光染料在防伪、分子探针等方面的应用也方兴未艾。由于荧光染料在科技和人们的生活中得到了越来越多的应用,对其测配色的研究也引起了颜色学家…

数据中心蓄电池监测,这个方法太好用了!

在数字化时代&#xff0c;数据机房扮演着至关重要的角色&#xff0c;成为企业和组织保障信息安全和业务稳定运行的关键枢纽。 数据中心的可靠性和持续运行并不仅仅依赖于稳定的电力供应&#xff0c;而是需要多层次的保障措施。其中&#xff0c;蓄电池监控系统作为数据中心不可或…

多城市同城分类信息发布h5公众号系统开发

多城市同城分类信息发布h5公众号系统开发 1&#xff1a;分类信息&#xff0c;商户入驻&#xff0c;红包广告&#xff0c;同城动态&#xff0c;代理加盟。 2&#xff1a;全国版&#xff0c;多城市版&#xff0c;本地版自由切换。 3&#xff1a;付费发帖&#xff0c;付费置顶、付…

【高危】Foxit 福昕PDF阅读器 Field Calculate 释放后使用漏洞(PoC)

漏洞描述 Foxit PDF阅读器是福昕软件公司推出的一款广泛使用的PDF文档阅读器。 在受影响版本中&#xff0c;由于其javascript引擎存在use-after-free漏洞&#xff0c;攻击者可以构造恶意的PDF文件&#xff0c;通过文件中包含的deletePages()等操作使福昕PDF阅读器过早删除与页…

2022 年云南省职业院校技能大赛(高职组) “软件测试”赛项竞赛规程

2022 年云南省职业院校技能大赛(高职组) “软件测试”赛项竞赛规程 一、赛项名称 赛项名称&#xff1a;软件测试 赛项组别&#xff1a;高职组 赛项归属产业&#xff1a; 电子信息大类 二、竞赛目的 (一)检验教学成效 本赛项竞赛内容以《国家职业教育改革实施方案》为设计方针…

一百三十三、Hive——Hive外部表加载含有JSON格式字段的CSV文件数据

一、目标 在Hive的ODS层建外部表&#xff0c;然后加载HDFS中的CSV文件数据 注意&#xff1a;CSV文件中含有未解析的JSON格式的字段数据&#xff0c;并且JSON字段中还有逗号 二、第一次建外部表&#xff0c;直接以&#xff0c;分隔行字段&#xff0c;结果JSON数据只显示一部分…

真实和虚拟相撞,构造的VR展厅特点和优势有哪些?

随着科技的不断发展&#xff0c;VR展厅成为了现代展览的一种全新展现方式&#xff0c;三维立体展厅的设计&#xff0c;让企业、画展、纪念展等可以创造出令人惊叹的虚拟展览空间效果&#xff0c;为用户带来丰富的体验。观众身临其境地感受实体展厅和展品&#xff0c;这种超越了…

【Docker-compose】基于Docker-compose创建LNMP环境并运行Wordpress网站平台

基于Docker compose创建LNMP环境并运行Wordpress网站平台 1.Docker-Compose概述2. YAML文件格式及编写注意事项3. Docker-Compose配置常用字段4.Docker Compose常用命令5.使用Docker-compose创建LNMP环境&#xff0c;并运行Wordpress网站平台5.1 Docker Compose环境安装5.2 使用…

苍穹外卖项目解读(一) 完整代码本地部署运行

前言 HM新出springboot入门项目《苍穹外卖》&#xff0c;笔者打算写一个系列学习笔记&#xff0c;“苍穹外卖项目解读”&#xff0c;内容主要从HM课程&#xff0c;自己实践&#xff0c;以及踩坑填坑出发&#xff0c;以技术&#xff0c;经验为主&#xff0c;记录学习&#xff0…

Tensorflow报错protobuf requires Python ‘>=3.7‘ but the running Python is 3.6.8

报错信息 仔细观察下方命令后&#xff0c;可得运行:python -m pip install --upgrade pip即可 完成后再次执行性安装命令 成功&#xff01;&#xff01;&#xff01;

Windows 10, version 22H2 (updated Jul 2023) 中文版、英文版下载

Windows 10, version 22H2 (updated Jul 2023) 中文版、英文版下载 Windows 10 22H2 企业版 arm64 x64 请访问原文链接&#xff1a;https://sysin.org/blog/windows-10/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Window…

【SAPABAP] ABAP Memory和 SAP Memory 区别

SAP系统中有两种内存&#xff1a; https://www.ngui.cc/el/2506560.html?actiononClick 1&#xff0c;ABAP Memory 简单说来一个session就是登录SAP系统开的窗口。 可以通过abap内存实现同一session中的数据交换。具体使用到 EXPORT 和IMPORT memory id 语句. 用户登陆后&…

SSRF总结

SSRF ​ SSRF全称&#xff1a;Server-Side Request Forgery&#xff0c;即服务器端请求伪造。 ​ 是一个由攻击者构造请求&#xff0c;在目标服务端执行的一个安全漏洞。攻击者可以利用该漏洞使服务器端向攻击者构造的任意域发出请求&#xff0c;目标通常是从外网无法访问的内…

企业软文怎么写:深度剖析写作技巧!

在当今信息爆炸的时代&#xff0c;企业软文已经成为了企业营销的重要手段之一。一篇高质量的企业软文不仅能够提升企业的品牌知名度&#xff0c;还能够为企业带来实际的经济效益。那么&#xff0c;如何才能写出一篇高质量的企业软文呢&#xff1f;本文伯乐网络传媒将从软文标题…