使用TreeSet对象去重排序
java对象除了采用equals和hashCode判断对象是否相等外,开发人员也可以通过其他属性判断两个对象是否相等
以下案例采用TreeSet去掉重复对象
Teacher:
public class Teacher{
private String name;
private Integer age;
public Teacher(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
TreeSetTest:
public class TreeSetTest{
public static void main(String[] args) {
TreeSet<Teacher> set=new TreeSet<Teacher>(new Comparator<Teacher>() {
@Override //通过姓名和年龄判断对象是否相等
public int compare(Teacher o1, Teacher o2) {
if(o1.getAge()>o2.getAge()){
return 1;
}else if(o1.getAge()<o2.getAge()){
return -1;
}else{
if(o1.getName().compareTo(o2.getName())>0){
return 1;
}else if(o1.getName().compareTo(o2.getName())==0){
return 0;
}else{
return -1;
}
}
};
});
Teacher p1=new Teacher("小学",20);
Teacher p2=new Teacher("初中",20);
Teacher p3=new Teacher("高中",20);
Teacher p4=new Teacher("初中",20);
set.add(p1);
set.add(p2);
set.add(p3);
set.add(p4);
Iterator<Teacher> iterator = set.iterator();
while(iterator.hasNext()){
Teacher teacher = iterator.next();
System.out.print(teacher.getName()+" ");
}
}
}
结果输出:
初中 小学 高中
使用TreeSet对象去重排序的更多相关文章
- TreeSet与TreeMap排序
1.TreeSet原理: /* * TreeSet存储对象的时候, 可以排序, 但是需要指定排序的算法 * * Integer能排序(有默认顺序), String能排序(有默认顺序), 自定义的类存 ...
- 数组去重----es6&es5&数组对象去重
es6方法: 普通数组: 1.使用Array.from(new Set(arr)); /* * @param oldArr 带有重复项的旧数组 * @param newArr 去除重复项之后的新数组 ...
- TreeSet类的排序
TreeSet支持两种排序方法:自然排序和定制排序.TreeSet默认采用自然排序. 1.自然排序 TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系, ...
- 什么是泛型?,Set集合,TreeSet集合自然排序和比较器排序,数据结构-二叉树,数据结构-平衡二叉树
==知识点== 1.泛型 2.Set集合 3.TreeSet 4.数据结构-二叉树 5.数据结构-平衡二叉树 ==用到的单词== 1.element[ˈelɪmənt] 要素 元素(软) 2.key[ ...
- 分享一种容易理解的js去重排序方法
<script> var arr=[1,8,6,4,88,22,99,4,6,86,5,58,89,5]; //先使用sort()函数去重 var a=arr.sort(function ...
- json对象数组按对象属性排序
var array = [ {name: 'a', phone: 1, value: 'val_4'}, {name: 'b', phone: 5, value: 'val_3'}, {name: ' ...
- linux下批量修改存有超大数据量IP文件中的IP内容以及去重排序
作为一个linux的学徒,分享一下自己解决这个小问题的心得,在处理这个问题时使用了一个小技巧感觉很适用,个人发觉linux的终端真滴是非常强大,下面就详细地介绍这个问题以及解决办法吧 问题描述:由于要 ...
- iOS探索:对NSArray中自定义的对象进行排序
http://mobile.51cto.com/hot-434804.htm 我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天 ...
- Java基础知识强化之集合框架笔记69:Collections类之ArrayList存储自自定义对象并排序的案例
1. ArrayList存储自自定义对象并排序的案例: ArrayList存储自自定义对象,并使用Collections对ArrayList存储基本包装类的元素排序. 2. 代码实现: (1)Stud ...
随机推荐
- Python核心技术与实战——四|Python黑箱:输入与输出
抽象的看,Python程序可以被看成一个黑箱:通过输入流将数据送达,经过处理后在输入,也就是说具备了一个图灵机运作的必要条件. 输入输出基础 最简单的输入是来自键盘的操作 name = input(' ...
- python time、datetime模块
时间的三种格式:1)时间戳 2)格式化的时间字符串 3)元组(struct_time):time.struct_time(tm_year=1970, tm_mon=5, tm_mday=23, tm_ ...
- Maven项目的一些依赖
Maven构建的Spring项目需要哪些依赖? <!-- Spring依赖 --> <!-- 1.Spring核心依赖 --> <dependency> <g ...
- oracle数据库架构
3.1 Client/Server Oracle 采取的是 Client/Server 架构. oracle 服务端分为两部分: Instance 实例 Database 数据库 实例, 又称为数据库 ...
- SpringBoot配置自定义美化Swagger2
1.添加maven依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springf ...
- idea 打包model 为jar包
1,在项目上鼠标右键 --> Open Module Settings 2, Artifacts --> + --> JAR --> From modules with dep ...
- Nginx动静分离-tomcat
一.动静分离 1.通过中间件将动态请求和静态请求分离. 2.为什么? 分离资源,减少不必要的请求消耗,减少请求延时. 3.场景 还可以利用php,fastcgi,python 等方式 处理动态请求 # ...
- 基于点云的3ds Max快速精细三维建模方法及系统的制作方法 插件开发
基于点云的3ds Max快速精细三维建模方法及系统的制作方法[技术领域][0001]本发明涉及数字城市三维建模领域,尤其涉及一种基于点云的3d ...
- javascript中面向对象的两种构建方式(构造函数)和(原型模式的区别)
1.构造函数模式--->alert的结果为false <!DOCTYPE html> <html lang="en"> <head> &l ...
- BigDecimal.setScale 处理java小数点[转]
BigDecimal.setScale()方法用于格式化小数点setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN)直接删除多余 ...