Set集合中的SortedSet接口下的实现类TreeSet

2023-11-18

放入TreeSet集合中的元素必须实现Comparable接口,不然会报错,因为这个集合中的元素会自动按元素的大小顺序排序,所以不是实现比较的接口就会出现ClassCastException。

还要注意一点的是Set集合中的元素是不可重读的,我们写的Comparable接口的实现方法如果返回的是0,就会认为这两个元素是相等的,也就是只能放进去一个,另一个放不进去。

测试代码

public static void main(String[] args) throws FileNotFoundException {


        TreeSet set = new TreeSet();

        set.add(new Student("zhangsan",12));
        set.add(new Student("lisi",85));
        set.add(new Student("lisi2",85));
        set.add(new Student("wangwu",42));
        set.add(new Student("zhaoliu",45));

        for (Object o : set) {
            System.out.println(o);
        }
}

实体类

class Student implements Comparable<Student>{
    String name;
    int age;

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    @Override
    public int compareTo(Student o) {
        return o.age-this.age;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Set集合中的SortedSet接口下的实现类TreeSet 的相关文章

随机推荐

  • SAP PO上传异步接口(PO发布Webservice)

    导语 接口是SAP与其他系统进行数据交互的一种方式 在这篇文章中主要讲述通过PO实现的上传接口 即SAP被动接收其他系统发送的数据 注意 对于配置中涉及的基本组件的介绍和创建在前面的博客有说明和介绍 再次不做过多赘述了 一 ESB Ente
  • 去除a标签默认样式_超链接样式的使用CSS入门基础(014)

    今天我们分享关于超链接样式的内容 在浏览器中 超链接的样式有默认样式 点击后样式 鼠标悬停样式和激活样式四种状态 超链接默认情况下是带有下划线的 看起来很丑 用户体验不好 前面我们说到了text decoration none可以去除下划线
  • Unity-后期处理效果之Bloom

    Unity 后期处理效果之Bloom 什么是Bloom Bloom属性 什么是Bloom Bloom是一种游戏常见的一种屏幕效果叫做高光溢出 是一种光学效果 其中来自明亮来源 如闪光 的光表现为泄露到周围对象中 通俗来说就是这种特效可以模拟
  • Visual Studio Code 插件

    Visual Studio Code 插件安装 插件安装 Script插件 Vue插件 插件安装 首页点击 工具和语言 如下图 接下来 在输入框中输入想要安装的插件的名字 点击 install 即可进行安装 Script插件 1 Eslin
  • C++中cout和cerr的区别?

    之前一直在用 但就是没在意两者到底有啥却别 今天又想到这个问题 总结下吧 以下的内容均是本人从网上查阅资料看来整理的 暂时还没有查阅官方资料 不保证准确 欢迎讨论 其实大家平常常会用的主要有三个 cout cerr clog 首先简单介绍下
  • http协议的状态码:404等常见网页错误代码

    http协议的状态码 一 1xx 临时响应 表示临时响应并需要请求者继续执行操作的状态码 100 继续 请求者应当继续提出请求 服务器返回此代码表示已收到请求的第一部分 正在等待其余部分 101 切换协议 请求者已要求服务器切换协议 服务器
  • 滴滴夜莺:从监控告警系统向运维平台演化

    简述 滴滴夜莺 Nightingale 是一款经过大规模生产环境验证的 分布式高性能的运维监控系统 基于Open Falcon 结合滴滴内部的最佳实践 在性能 可维护性 易用性方面做了大量的改进 支撑了滴滴内部数十亿监控指标 覆盖了从系统
  • 惊呆了!女儿拿着小天才电话手表,问我Android启动流程!

    首先 new一个女儿 var mDdaughter new 女儿 6岁 漂亮可爱 健康乖巧 最喜欢玩小天才电话手表和她的爸爸 好了 女儿有了 有一天 女儿问我 爸爸爸爸 你说我玩的这个小天才电话手表怎么这么厉害 随便点一下这个小图片 这个应
  • Manifest合并失败几种原因以及解决方法

    今天遇到了一个报错 Error Execution failed for task app processDebugManifest gt Manifest merger failed with multiple errors see lo
  • c语言合并两个单链表LA和LB,把两个递增的单链表La,Lb,合并成一个递减的单链表Lc...

    原文题是严蔚敏同志的数据结构习题中第二章线性表中提出的问题 原问如下 2 24 假设有两个按元素值递增有序排列的线性表A和B 均以单链表作存储结构 请编写算法将A表与B表归并成一个按元素值递减有序 即非递增有序 允许表中含有值相同的元表 排
  • 基于Vue + vuex + Antd-design-vue实现天气App

    simple weather github 地址 github com WqhForGitHu 效果图 PC端 移动设备端 技术框架 该应用是基于 Vue vuex 实现的 页面的 UI 则是使用了 Antd design vue 库来完成
  • Android 版本统一管理

    前言 因为现在项目都比较模块化 组件化 要用到的model比较多 一个model就有一个build gradle文件 里面都有compileSdkVersion或buildToolsVersion等可能出现版本不一致导致编译出现错误 所以要
  • thinkphp5学习路程 三 数据库操作

    首先我用的是php中文网提供的php工具箱 phpmyadmin管理mysql 在此之前最好对sql语句有所了解 会简单的增删改查等 在里面创建数据库和一张表如下 随后你需要打开数据库的配置文件 目录为 application databa
  • Python OpenCV中的图像阈值处理

    1 前言 上一篇介绍了用C 如何对一幅图像进行阈值处理 本篇接着用python来做同样的事情 图像阈值处理是很多高级算法的底层逻辑之一 比如在做图形检测 轮廓识别时 常常会先对图像进行阈值处理 然后再进行具体的检测或识别 因此很有必要掌握图
  • 指针作函数返回值

    include
  • 指向数组的引用 const char(&p)[a]

    指向数组的引用 const char p a 问题起源 如何在函数内 也能获取数组的大小信息 如果是定义一个数组a后 使用如下方法即可获取大小信息 cout lt lt sizeof a sizeof a 0 但是如果作为一个参数传入到一个
  • 最新酒桌小游戏喝酒小程序源码_带流量主源码下载

    2022最新酒桌小游戏喝酒小程序源码 带流量主 喝酒神器3 6 我修改增加了广告位 根据文档直接替换即可 原版本没有广告位 直接上传源码到开发者端即可 通过后改广告代码 然后关闭广告展示提交 通过后打开即可 下载地址 最新酒桌小游戏喝酒小程
  • 在linux系统下安装配置apache服务器

    我所用的是centos linux系统 但apache的服务在linux系统都大同小异 像ubuntu redhat等等 now let us go 如有问题 欢迎直邮 zhe jiang he hp com lt 何哲江 gt 1 获取软
  • Edge浏览器没有让我失望! 今天终于可以在win10中模拟IE内核进行前端测试了!

    前言 ietest现在是不是不好用了 Edge浏览器仿真是不是不见了 如图 如果我们在前端开发javascript遇见一些老旧的语法标准 想要测试一下都难 想想都抓狂 不过不用担心 经过这几天的资料查阅 我还是找到了一个解决办法来模拟旧版I
  • Set集合中的SortedSet接口下的实现类TreeSet

    放入TreeSet集合中的元素必须实现Comparable接口 不然会报错 因为这个集合中的元素会自动按元素的大小顺序排序 所以不是实现比较的接口就会出现ClassCastException 还要注意一点的是Set集合中的元素是不可重读的