java集合框架Set

Java集合框架(List+Set+Map) 目录集合简介集合框架是?:特点集合和数组的区别使用集合框架的好处集合框架关系图Collection接口Collection集合主要有List和Set两大接口List集合List集合特点:List的主要实现:1、UML遍历方式: List删除方式(3种+1)List优化泛型 装箱、拆箱ArrayList、LinkedList、Vector 的区别 List常用方法Set集合Set集合特点:那么如何解决去重问题呢? ​编辑遍历方式Set的主要实现类: Set常用方法Map集合Map常用方法Map接口特点遍历方 阅读详情

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------

Java集合框架Set

|--Set:集合是无序(存入和取出的顺序不一定一致),元素不重复。

                   |--HashSet:底层数据结构是哈希表

                                      HashSet是如何保证元素唯一性的呢?

                                      是通过元素的两个方法,hashCode和equals来完成。

                                      如果元素的HashCode值相同,才会判断equals是否为true;

                                      如果元素的HashCode值不同,不会调用equals.

                       注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法。

                  |--TreeSet:可以对Set集合中的元素进行排序。

                                    底层数据结构是二叉树。

                                    保证元素唯一性的依据:

                                    comparaTo方法 return 0;

                                    TreeSet排序的第一种方式:让元素自身具备比较性。元素需要实现

                                    compareTo方法。

                                    这种方式也成为元素的自然顺序,也称为默认顺序。

 

                                   TreeSet的第二种排序方式。

                                   当元素自身不具备比较性时,或者具备的比较性不是所需要的。

                                   这时就需要让集合自身具备比较性。

                                   在集合初始化时,就

Set集合的功能和Collection是一致的。

TreeSet集合 

我们需要了解一下Comparable接口

                                                               此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然顺序,类的compareTo方法被称为它的自然比较方法。

                                                               比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

@Override

public int compareTo(Object o) {

           if(!(o instanceof Student)){

                           throw new RuntimeException("不是学生对象");

             }

             Student stu=(Student) o;

             System.out.println(this.name+"...comparable.."+stu.name);

              if(this.age>stu.getAge()){

                       return 1;

              }

              if(this.age==stu.age){

                       return this.name.compareTo(stu.name);

                 }

             return -1;

}

当学生的姓名和年龄相同时,被认为重复元素,其实在现实生活中一般以身份证作为唯一的标识(身份证号码和姓名).

上面一幅画是描述数据结构中的 红黑树(二叉树)

TreeSet 底层使用的数据结构是二叉树。

当姓名和年龄相同时那么 ,就存入红黑树。

   

这样的好处是减少比较次数。

当二叉树中元素特别多,那么它会则中选择树根。

                   TreeSet排序的第一种方式:让元素自身具备比较性元素需要实现Comparable接口,覆盖compareTo方法。

                    这种方式成为元素的自然顺序,或者叫做默认顺序。

**TreeSet集合的第二种排序方式。

                    当元素自身比具备比较性时,或者具备的比较性不是所需要的。

                    这时就需要让集合自身具备比较性。

                    在集合初始化时,就有了比较方式。

TreeSet(Comparator<? super E> c)
          构造一个新的空 set,该 set 根据指定的比较器进行排序。

接口 Comparator<T>

比较函数强行对某些对象 collection 进行整体排序。可以将 Comparator 传递给 sort 方法(如 Collections.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如 TreeSet 或 TreeMap)的顺序。

class MyCompare implements  Comparator{

            @Override

             public int compare(Object o1, Object o2) {

                           Student s1=(Student)o1;

                           Student s2=(Student)o2;

                           int num=s1.getName().compareTo(s2.getName());

                           if(num!=0){

                           return num;

                            }

                            return s1.getAge()-s2.getAge();

}

}

TreeSet ts=new TreeSet(new MyCompare());

字符串本身具备比较性。但是它的比较方法不是所需求的。


这时就只能使用比较器。

class StrLenComparator implements Comparator{

                     @Override

                     public int compare(Object o1, Object o2) {

                                   String s1=(String) o1;

                                  String s2=(String) o2;

                                  if(s1.length()==s2.length()){

                                        return s1.compareTo(s2);

                                  }

                                      return s1.length()-s2.length();

                                  }

}

写比较器的时候注意 主要条件比较了,还应当考虑到当主要条件相同时,那么次要条件也要进行比较。

所以写比较器要注意bug.


无人机通信电台--XBee-PRO 900HP (S3B) XBee PRO S3B也称为XBee-900HP无线模块,它是一款工作在频段900~928MHz之间,基于FHSS跳频技术的远距离无线数传电台核心模块。常用型号如下: 类别 型号 开发套件 XKB9-DMT-UHP XBee-PRO 900HP (S3B) DigiMesh模块,200Kbps,软天线 XBP9B-DMWT-002 XBee-PRO 900HP (S3B)... 阅读详情

相关推荐

Moltbot 超详细安装使用教程(初学者版)

你在外面逛街,用微信/Telegram 发消息说"帮我查一下明天的天气"它立刻帮你查好并回复你说"帮我在电脑上新建一个文件夹叫'工作文档'"它真的帮你在电脑上创建了这就是 Moltbot ——一个能真正帮你干活的 AI 助手。API Key 就像是一把"钥匙",让 Moltbot 能够使用 AI 服务。

weixin_51040479的博客 2017

Java集合框架之Set集合

Java集合之Set集合

m0_64043477的博客 399

5款高性价比LDO芯片实测对比:从TPS7A4501到LM2940,哪款更适合你的项目?

本文通过实测对比了TPS7A4501、TPS72301、LM2937、LM2940等五款高性价比LDO芯片的核心性能。文章详细分析了跌落电压、输出噪声、静态电流及热性能等关键指标,并结合电池供电物联网节点、高精度数据采集等典型应用场景,提供了清晰的选型指南,帮助工程师根据项目需求选择最合适的LDO芯片。

weixin_29305337的博客 116

Java集合框架详解:List、Set、Map

接口:定义集合的抽象行为实现类:接口的具体实现算法:对集合进行操作的方法(如排序、搜索)Collection接口:存储单一元素的集合(List、Set、Queue)Map接口:存储键值对的集合。

weixin_56690213的博客 1686

Java本地AI推理初体验:Jlama+LangChain4j构建离线问答系统

Jlama 是专为 Java 生态设计的现代化大型语言模型(LLM)推理引擎,旨在让开发者无需依赖外部服务即可直接在 Java 应用中运行本地化模型推理。本文将结合Jlama + langchain4j 实现一个本地可运行的简单问答Demo。

2501_92589102的博客 408

Oracle 11g版本下载及安装超详细教程图解

新手Oracle安装教程

weixin_43738344的博客 10万+

Java集合框架List、Set、Map

Map与Collection并列存在。用于保存具有映射关系的数据:key-value。Map中的key和value都可以是任何引用类型的数据。Map中的key用Set来存放,不允许重复,即同一个Map对象所对应的类,须重写hashCode()和equals()方法。常用String类作为Map的“键”。key和value之间存在单向一对一关系,即通过指定的key总能找到唯一的、确定的 value。Map接口的常用实现类:HashMap、

weixin_67224308的博客 220

【归因】MATLAB实现最佳指纹法(待更新)

简述用于归因分析的最佳指纹法,及其MATLAB实现。

WW、forever的博客 4286

Java集合框架中的Map和Set

我们将详细介绍它们的概念、使用方法以及常用的方法,最后还会提供一些相关的练习题目。每个键都必须是唯一的,但值可以重复。Java提供了多种实现Map接口的类,其中最常用的是HashMap、TreeMap和LinkedHashMap。它提供了一种存储不同元素的方法,确保集合中的每个元素都是唯一的。3、使用TreeMap实现一个简单的字典,其中键为单词,值为单词的解释,然后按照单词的字典顺序输出所有单词及其解释。1、创建一个HashMap实例,添加若干个学生的姓名和对应的分数,然后遍历输出所有学生的姓名和分数。

2201_75437633的博客 1201

【SigmaStudio】自定义算法组件之源码规范(二)

工作中自定义算法组件一般是dll文件,生成dll文件需要XML文件和DLB文件,记录一下DLB文件代码的编码规范,定义SigmaStudio SHARC算法开发的编码规则,涵盖函数原型、内存管理、接口结构体等关键要求,确保算法模块与SigmaStudio环境兼容

liang_song的博客 1377

笔试题-2023-乐鑫-数字IC设计【纯净题目版】

笔试题-2023-乐鑫-数字IC设计【纯净题目版】

w0shishabi的博客 1779

Java 集合框架中: Set

Java Set接口是集合框架中用于存储不重复元素的核心组件,它继承自Collection接口,通过equals()方法确保元素唯一性。主要实现类包括基于哈希表的HashSet(无序)、保留插入顺序的LinkedHashSet和基于红黑树的TreeSet(有序)。Set提供add()、remove()、contains()等基础操作,并通过iterator()支持元素遍历。使用时需注意:必须同时重写equals()和hashCode()方法,避免使用可变对象作为元素,多线程环境需考虑线程安全问题。

Java孩子的博客 974

Microsemi Libero使用技巧11——CoreUARTAPB RX管脚分配时不显示

调用串口IP核CoreUARTAPB,并例化到顶层设计,发现UART_RX管脚在进行管脚分配时没有显示出来,最后发现是CoreAPB3总线IP核配置不对导致,改为如下配置后正常。

whik1194的博客 758

Java集合框架——Set集合

一:set接口的实现类 (1)set接口常用的实现类:HashSet和TreeSet (2)声明方式: Set&lt;String&gt; set1=new HashSet&lt;String&gt;(); set&lt;String&gt; set2=new TreeSet&lt;String&gt;(); 由于set集合是无序的,遍历set集合的结果与插入set集合的顺序并不相同。 二:...

小礼貌的博客 529

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java中的集合框架Set 、List 、Map

java中的集合框架主要包含这三大块,我们所要掌握的主要是这三个接口及其实现类的使用方法; 首先要说的是Set  List是从Collection继承而来,而Map则不是从它继承; 对于Collection接口,有以下从教材摘抄的内容: Collection是集合框架中最根本的一个接口,它代表了各式各样的对象集合, Collection接口中的方法分为以下几类: (1)单元素的添加 、删

小小时代的专栏 860

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java 集合框架之List集合,Set集合,Map集合

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。一些Collection允许相同的元素而一些不允许,一些能够排序而另一些不能排序。 Java中不提供直接继承自Collection的类,提供的都是继承自Collection的子类接口,比如List,Set,Map。 集合框架被设计成要满足以下几个目标。 该框架必须是高性能的。基本集...

practical_sharp的博客 401

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java 集合框架:Set、List、Map

集合框架: 集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象。 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相

weixin_45686583的博客 328

Java集合框架 超详细【List ,Set, Map】

Java 集合可分为 Collection 和 Map 两种体系一、Collection 接口1.1 、List接口 【元素有序、可重复的集合】List实现类之一:ArrayListList实现类之二:LinkedListList实现类之三:Vector1.2、Set接口【元素无序、不可重复的集合】Set实现类之一:HashSetSet实现类之二:LinkedHashSetSet实现类之三:TreeSet二 、Map接口 【双列数据,保存具有映射关系“key-value对”的集合】Map实现类之一:Has

zhangbw's blog 948

Java--集合框架之Set接口

Java集合框架总图 Set接口和具体实现类 Set接口继承Collection,集合元素不重复。与List一样,它同样允许null存在但仅可有一个。由于Set接口的特殊性,所有传入Set集合中的元素都必须不同。 注:关于重复性问题,Set接口中的不重复是有特殊要求的。 两个不同的对象A和B,正常情况下是能够放入到Set里面的,但如果A和B都重写了hashcode和equals方法,且重写后的...

liuyanan的博客 195

Java中set集合框架

Set:元素不可以重复,是无序的 Set接口中的方法和Collection一致 1.HashSet:内部数据结构是哈希表,是不同步的,无序,不重复代码实例:HashSet hs=new HashSet(); //HashSet hs=new LinkedHashSet(); //有序 hs.add(new Person("value1",21)

晓太白的博客 2460

Java集合框架Set接口及实现类

Set接口 Set接口继承于Collection接口,不包含重复元素的集合,往Set集合中存放对象时,它会自动调用Equals方法来比较是否与Set集合中的已有元素重复。因此,要存放到Set集合中的对象,在对应类中就需要重写equals方法(比较对象地址值)和hashCode方法(比较哈希码值),不过java SE API提供的8种数据包装类,String类,Date类,Calendar类都重写...

wjsone的博客 620

Java集合框架、list接口、set接口的使用

集合 Java中的集合框架是指一系列存储数据的接口和类,这些类和接口都位于java.util包中使用集合框架可以解决复杂的数据存储问题,Java中内置了丰富的集合框架,并提供了大量进行处理的方法,用于解决数组中存储数据有限的问题。只能存储引用数据类型数据 集合框架 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jO6eiHQ0-1605326581159)(img\image-20201026093208412.png)] Collection接口:集合框架总接口,其中包含了

LzyGamber的博客 188

Java集合框架 Set接口

Java 集合框架中的Set是一个非常重要的接口,用于存储不重复的元素。Set接口及其实现类提供了多种不同的数据结构,以满足不同的需求。下面详细介绍Set接口及其主要实现类。

yuehua00的专栏 384

Java集合框架—Set

集合框架Set 的特点:无序,不可以重复元素。

冷血之心的博客 4658

java集合框架之Set底层代码实现

Set接口下的关系 /–Collection /----Set /---------HashSet 主要实现类 /-------------linkedHashSet 主要实现类 /---------SortedSet 接口 /-------------TreeSet 主要实现类 Collection与Set的关系 Set继承了Collection接口,但是Set并没有创建新的方法,仍然...

weixin_44771582的博客 2097

Java进阶核心之集合框架Set

Java进阶核心之集合框架Set 什么是Set数据结构 Set相对于List是简单的⼀种集合,具有和 Collection 完全⼀样的接⼝,只是实现上不同,Set不保存重复的元素,存储⼀组唯⼀,⽆序的对象。 Set中的元素是不能重复的, 实现细节可以参考Map,因为这些Set的实现都是对应的Map的⼀种封装。⽐如HashSet是对HashMap的封装,TreeSet对应TreeMap Set底层是⼀个HashMap,由于HashMap的put()⽅法是⼀个键值对,当新放⼊HashMap的Entry中ke

ruan_luqingnian的博客 556
上一篇: Random伪随机数
下一篇: 数据结构_数据结构与算法01
linuxMinx
博客等级 码龄15年 195粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值