JavaSE-Set集合

现在用Set集合邦邦两拳打面试官的脸吧!别用针扎了~~ 请添加vx小助手:xiehuangbao1123 领取java全套学习资料 Set集合 Set集合概述和特点【应用】 无序不可重复 没有索引,不能使用普通for循环遍历。可以使用 迭代器 或者 增强foreach语句 遍历 TreeSet集合 TreeSet集合概述和特点【应用】 无序不可重复 没有索引 可以将元素按照规则进行排序(特色) TreeSet():根据其元素的自然排序进行排序 TreeSet(Comparator comparator) :根据指定的比较器进行排序 TreeS.. 阅读详情

Set集合

Set集合存放无序不可重复的元素

List集合存放有序可重复的元素

Set集合不按照特定方式进行排序,只是放元素放在集合

Set主要是由HashSet和TreeSet具体实现类实现

HashSet

Hash(哈希算法)——哈希函数定义的好坏

HashCode——哈希值

  1. equals()方法判断两个元素的HashCode值是否相同
  2. 如果HashCode值相同,继续与集合的元素作比较
    1. 如果还相同,则视为同一个对象,不保存在HashSet中
    2. 如果对象不相同,理论上要存储(比较麻烦)——避免发生
  3. 如果HashCode值不相同,直接把元素存放在该元素的HashCode位置

初始化

HashSet<E> hs = new HashSet<E>();

常用方法

boolean add(E e)  #如果没有已存在,则将指定的元素添加到该集合中
boolean contains(Object o)  #如果这套 true返回包含指定的元素

TreeSet

TreeSet是一个有序集合,默认将元素按照升序排列

构造方法

TreeSet() #构造一个新的、空的树集,根据其元素的自然排序进行排序
TreeSet(Collection<? extends E> c) #构造一个新的树集包含在指定集合的元素,根据其元素的自然排序排序
TreeSet(Comparator<? super E> comparator) #构造一个新的、空的树集,根据指定的比较器进行排序

常用方法

E ceiling(E e)  #返回最小的元素在这组大于或等于给定的元素,或 null如果没有这样的元素
E first()  #返回当前在该集合中的第一个(最低的)元素
E floor(E e)  #返回最大的元素在这组小于或等于给定的元素,或 null如果没有这样的元素
E higher(E e)  #返回最小的元素在这套严格大于给定的元素,或 null如果没有这样的元素
E last()  #返回当前在该集合中的最后(最高)元素
E lower(E e)  #返回最大的元素在这套严格小于给定的元素,或 null如果没有这样的元素
E pollFirst()  #检索并移除第一(最低)的元素,或返回 null如果这集是空的
E pollLast()  #检索和删除最后(最高)的元素,或返回 null如果这集是空的

实现TreeSet(排序)

方法一:实现Comparator接口

Person类

package com.TreeSet.util;

import java.util.Comparator;
/*
 * @author Administrator
 * @version 1.0
 */
public class Person implements Comparator<Person>{
    //定义成员变量
    private int age;
    private String name;
    //无参构造方法
    public Person(){
    	
    }
    //有参构造方法
    public Person(int age, String name){
        this.age = age;
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    @Override
    public int compare(Person p1, Person p2){
        if (p1.age > p2.age){
            return 1;
        }
        else if (p1.age < p2.age){
            return -1;
        }
        else {
            return 0;
        }
    }
    
    @Override
    public String toString(){
        return "[" + this.age + "," + this.name + "]";
    }
}

TreeSetDemo类

package com.TreeSet.util;

import java.util.TreeSet;
/*
 * @author Administrator
 * @version 1.0
 */
public class TreeSetDemo {
	//主函数
	public static void main(String[] args) {
		//实例化TreeSet的对象
		TreeSet<Person> ts = new TreeSet<Person>(new Person());

        System.out.println(ts.add(new Person(27, "张三"))); //true
        System.out.println(ts.add(new Person(6, "吴一")));  //true
        System.out.println(ts.add(new Person(15, "刘二"))); //true
        //遍历
        for (Person person : ts){
            System.out.println(person);
        /*
         * [6,吴一]
         * [15,刘二]
         * [27,张三]
         */
        }
	}
}
方法二:指定比较器Comparator(匿名内部类)

Person类

package com.TreeSet.util;
/*
 * @author Administrator
 * @version 1.0
 */
public class Person {
    //定义成员变量
    private int age;
    private String name;
    //无参构造方法
    public Person(){

    }
    //有参构造方法
    public Person(int age, String name){
        this.age = age;
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString(){
        return "[" + this.age + "," + this.name + "]";
    }
}

TreeSetDemo类

package com.TreeSet.util;

import java.util.Comparator;
import java.util.TreeSet;
/*
 * @author Administrator
 * @version 1.0
 */
public class TreeSetDemo {
    //主函数
    public static void  main(String[] args){
        //实例化TreeSet的对象
        TreeSet<Person> ts = new TreeSet<Person>(new Comparator<Person>() {
            @Override
            //匿名内部类
            public  int compare(Person o1, Person o2) {
                if (o1.getAge() > o2.getAge()){
                    return 1;
                }
                else if (o1.getAge() < o2.getAge()){
                    return -1;
                }
                else {
                    return 0;
                }
            }
        });

        System.out.println(ts.add(new Person(15, "刘二"))); //true
        System.out.println(ts.add(new Person(27, "张三"))); //true
        System.out.println(ts.add(new Person(6, "吴一")));  //true
        //遍历
        for (Person person : ts){
            System.out.println(person);
        }
        /*
         * [6,吴一]
         * [15,刘二]
         * [27,张三]
         */
    }
}
JavaSE-7:Set 集合 Set 集合 Set集合 Set用于存储不重复的对象集合,在Set集合中存储的对象不存在两个对象 equals 比较为true. HashSet和TreeSet是Set集合两个常见的实现类,分别用hash表和排序二叉树的方式实现了Set集 合。 Set<Integer> set = new HashSet&lt... 阅读详情

相关推荐

win11下的MySQL安装

目前官方最新版本是8.0.26,考虑到其稳定性、可靠性还需一定周期保证,所以使用官方版求稳定仍然建议5.7系列。3、选择MySQL Servers 5.7.38 -x64,然后按绿色箭头将选中的版本移植到右边选中框中。4、点击下方蓝色Advanced Options,选择安装位置。1、在开始界面搜索MySQL,点击command line。4、在“系统变量”中选择“path”,点击编辑。5、新建——>增加MySQL路径——>确定,12、execute,安装好后next。9、不需要做修改,直接点击next。.

rensweet的博客 2万+

set和TreeSet的使用和原理

假如有个项目,要把一个公司的员工的名字,年龄,工资做一个表单,然后可以实现点按钮就按姓名笔画或者拼音,按工资水平,按年龄或者按其他方式进行排列,当然用数据库是最好的,但是如果要求用集合呢,个人认为TreeSet是个可以考虑的类, set的特点: 不包含重复元素

bmw90的博客 1331

量子密钥分发(QKD)原理、工程实现与实战部署全解析

密钥分发是信息安全的核心基础,它解决了通信双方如何安全共享秘密密钥的难题。传统方法依赖于数学问题的计算复杂性,而量子密钥分发(QKD)则基于量子力学原理,为密钥分发提供了信息论安全的物理保障。其核心价值在于,利用量子不可克隆定理和测量坍缩原理,使得任何窃听行为都会被合法通信方检测到,从而在理论上实现无条件安全的密钥协商。这项技术特别适用于对安全性要求极高的场景,如金融数据同步、政务专网和电力系统保护。本文聚焦于量子保密通信,深入剖析了以BB84协议为代表的QKD工作原理,并详细拆解了包含单光子探测、偏振编码

weixin_29324401的博客 350

Java基础 集合框架 之Set框架之TreeSet

Java基础 集合框架 之Set框架之TreeSet

骑牛小道士 1158

OTN设备核心知识速记

本文章为工作笔记,若有错误,还需大家指正。不定期更新。

Hiddengold的博客 2650

Blender建模:对于模型布线的一些思考

Blender布线中一些问题的总结和思考,主要讲述原理和解决方法。

baidu_38797690的博客 1830

Set之TreeSet与HashSet

HashSet是基于哈希表实现的,他可以快速的进行插入、删除和查找操作,时间复杂度为O(1) ,HashSet不会保证元素的顺序,原因在于,他是根据元素的哈希值来存储和查询元素的,如果需要按照元素的顺序进行遍历集合,可以使用LinkedHashSet,他是HashSet的子类,内部使用的是链表维护元素的顺序。

好看的皮囊千篇一律,有趣的灵魂万里挑一。 1545

open3d将某一时间序列下的彩色图和深度图批量转换成点云(python)

必备条件需要3D相机生成的彩色图及深度图,注意要将深度图与彩色图对齐(一般3D相机自带对齐算子),以及3D相机的彩色图内参(相机自带内参获取功能)。有了此彩色图、对齐后的深度图以及相机内参就能使用open3d生成彩色点云了.

吾名招财的博客 315

Set、TreeSet、HashSet区别

Set,TreeSet,HashSet,SortedSet,LinkedHashSet的区别 (1)Set接口 不允许出现重复的元素,每个元素添加入set时,set集合会使用equals方法,判断集合中是否有相同的元素,如果有,就返回false,如果没有,才进行操作。同时set的元素是无序的,就是说输出set集合中元素时,不是按照存入的顺序进行输出的 (2)HashSet 是Set接口的实现类,H...

Alyssa_xiong的博客 1470

极智芯 | 解读国产CPU之海光

大家好,我是极智视界,本文分享一下 解读国产CPU之海光。希望我的分享能对你的学习有一点帮助。

极智视界 3320

Motoman机器人离线编程——Motocom32开发简介

欢迎关注Jungle的Motoman机器人离线编程专栏系列文章: Motoman机器人离线编程——Motocom32开发简介 Motoman机器人离线编程——Visio Studio环境配置 Motoman机器人离线编程——Motocom32库函数的使用与封装 Motoman机器人离线编程——Motocom32参考文献及注意事项 Motoman机器人离线编程——MotocomES介绍 ...

冯Jungle的个人博客 8714

JavaSE丨集合框架入门(二):从 0 掌握 Set 集合

本文介绍了Java中的Set集合及其主要实现类

weixin_73953000的博客 997

如何借助Gemini 3 Pro完成一篇文献精读?(劝收藏)

金句必须是原文的完整句子,并附上该句子在文中的大致位置。你是一名资深科研文献评估专家,请根据我提供的文献信息(标题、作者、期刊、时间、引用、摘要、结论、图表)依次输出:①影响力评估:按期刊、作者、时间、引用、问题重要性给出1–10分及简述;用上述方法再结合Gemini 3 Pro的辅助,原本需要3小时才能读完一篇文献,现在只需50分钟,不管是顶刊论文还是领域内冷门论文,都可以用这套方法,另外七哥设计的高阶精读提示词,需根据自己的文献内容做调整,希望这篇文章的方法能帮你高效精读文献,掌握文献的精华内容。

智能AI让学术科研更容易 1303

JavaSE 集合 Set

JavaSE 集合 Set 标签(空格分隔): JavaSE Set Set 散列表 常见API 继承collenction中的方法没有自己的方法 迭代方式 只能用迭代器方式迭代 HsahSet 无序散列表根据hashcode进行排序 插入时先进行hashcode判断如果不相同则直接插入 当相同时者比较equals方法不相同加入 需要重写hashcode和equals 如果不重写...

weixin_43999652的博客 288

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JavaSE Set集合

JavaSE Set集合

大雄送你走的博客 1500

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【JavaSE】5.集合Collection:List、Set;Map

— title: JavaSE_5.集合Collection:List、Set;Map date: 2020-11-09 20:01:08 tags: JavaSE — 泛型<> 单列集合List、Set;双列集合:Map Collection接口: list接口(ArrayList、LinkedList)、set接口(HashSet、TreeSet、LInkedSet) Map接口: HahMap(实现类)、TreeMap(实现类) ArrayLIst方法: boolean add(E .

界王拳十倍 334

JavaSE进阶 | Collection集合、List集合、Set集合讲解

JavaSE进阶 | Collection集合、List集合、Set集合讲解

m0_61933976的博客 1276

JavaSe—Set集合

本文详细介绍了Java中的Set集合及其实现类。主要内容包括:1)Set集合特点为无序、不重复、无索引,常用实现类有HashSet、LinkedHashSet和TreeSet;2)HashSet底层基于哈希表实现,通过重写hashCode()和equals()方法可实现对象去重;3)LinkedHashSet在HashSet基础上维护链表保证元素插入顺序;4)TreeSet通过红黑树实现元素自动排序,要求元素实现Comparable接口或提供Comparator。文章通过代码示例展示了各Set类的使用方法和

y3245239334的博客 970

javase Set集合

Set接口是Collection的子接口,Set接口相较于Collection接口没有提供额外的方法Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个 Set 集合中,则添加操作失败。Set集合支持的遍历方式和Collection集合一样:foreach和Iterator。Set的常用实现类有:HashSet、TreeSet、LinkedHashSet。HashSet 是 Set 接口的主要实现类,大多数时候使用 Set 集合时都使用这个实现类。

qq_64005599的博客 882

javase之Set集合体系

package zhang.javase.TestSet; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet; import o...

qq_43257103的博客 225

JAVASE:Set集合

/ 自然排序(字符串按字典序)System.out.println("自然排序: " + naturalOrder);// 输出: [Alice, Bob, Charlie]// 自定义排序(按字符串长度)System.out.println("按长度排序: " + lengthOrder);// 输出: [Kiwi, Apple, Banana]

跟着豪哥学Java 713

Day17JavaSE——Set集合&集合练习

Day17JavaSE——Set集合&集合练习 文章目录Day17JavaSE——Set集合&集合练习Set集合Set集合的概述HashSetHashSet类概述自定义对象存储进HashSet & HashSet的集合遍历集合去重LinkedHashSetTreeSet概述TreeSet的排序以及比较器排序的代码实现TreeSet保证元素唯一和自然排序的原理和图解TreeSet存储自定义对象并遍历练习Comparetor比较器的使用集合练习练习1练习2 Set HashSet L

adAir_liu的博客 801

【JavaSE】集合(一)————Collection接口(List接口[ArrayList类,LinkedList类],Set接口[HashSet类,TreeSet类])

文章目录1.集合类体系结构2. Coolection接口2.1 Collection 集合概述和使用2.2 Collection 集合常用方法2.3 集合的遍历3. List接口3.1 List集合概述和特点3.2 List集合特有常用方法3.3 并发修改异常3.4 ListIterator迭代器3.5 增强for循环3.6 List集合子类特点3.7 ArrayList实现类3.8 LinkedList实现类4.Set接口4.1 Set集合概述和特点4.2 哈希值4.3 HashSet类4.3.1 Has

weixin_44197120的博客 308

JavaSE set集合学习总结

Set集合 无序,没有下标,集合中的元素不重复。 HashSet 打印结果去重 且无序。 例子 public static void main(String[] args) { HashSet<Person> hs = new HashSet<Person>(); //定义了一个Person类 hs.add(new Person("张三",23)); hs.add(n...

Ro0okie的博客 386

javaSE进阶-Set集合

javaSE进阶-Set集合 Set集合概述和特点 基础自Colletion集合 不包含重复元素的集合 没有带索引的方法,所以不能使用普遍for循环遍历 它是由子类HashSet实现的,HashSet对集合的迭代顺序不做任何保证,它的底层数据结构是哈希表 Set集合存储数据并遍历 如图:我们添加了四个元素,其中存储了重复的元素java,但是当我们遍历时,集合里是没有两个Java元素的 注:Set集合添加重复元素时,编译和运行时都不会出错,但是不会重复添加 ...

qq_60264381的博客 325
上一篇: JavaSE-List集合
下一篇: JavaSE-Map集合
JP-Destiny
博客等级 码龄8年 34粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值