Java TreeSet集合 比较器排序Comparator的使用
比较器排序Comparator的使用
- 存储学生对象,并遍历,创建TreeSet集合使用带参构造方法
- 要求,按照学生年龄从小到大排序,如果年龄相同,则按照姓名的字母循序排序
结论
- 用TreeSet集合存储自定义对象,代参构造方法使用的是“比较器排序”对元素进行排序的;
- 比较器排序,就是让集合构造方法接收Comparator实现类对象,重写compareTo(T O1,tO2)方法; 3、重写方法时,一定注意排序规则,必须按照要求的主要条件和次要条件来写
//TreeSetDemo.java
/*比较器排序Comparator的使用
1、存储学生对象,并遍历,创建TreeSet集合使用带参构造方法
2、要求,按照学生年龄从小到大排序,如果年龄相同,则按照姓名的字母循序排序
结论
1、用TreeSet集合存储自定义对象,代参构造方法使用的是“比较器排序”对元素进行排序的;
2、比较器排序,就是让集合构造方法接收Comparator实现类对象,重写compareTo(T O1,tO2)方法;
3、重写方法时,一定注意排序规则,必须按照要求的主要条件和次要条件来写
*
* */
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet; public class TreeSetDemo {
public static void main(String[] args) {
//创建TreeSet集合对象
TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
int num = s1.getAge() - s2.getAge();//按照年龄有小到大排序
//如果年龄相同,则根据姓名的字母循序排序(采用三元运算符进行比较)
int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;
return num2;
}
});
//创建学生对象
Student s1 = new Student("linqingxia", 35);
Student s2 = new Student("zhangmanyu", 30);
Student s3 = new Student("wangzuxian", 36);
Student s4 = new Student("liudehua", 30);
Student s5 = new Student("zhourunfa", 34);
Student s6 = new Student("zhourunfa", 34);
//将学生添加到集合
ts.add(s1);
ts.add(s2);
ts.add(s3);
ts.add(s4);
ts.add(s5);
ts.add(s6); //采用迭代器遍历集合,
/* Iterator<Student> it = ts.iterator();
while(it.hasNext()){
Student s = it.next();
System.out.println(s.getName()+":"+s.getAge()); }*/
//采用增强for遍历集合
for (Student s : ts) {
System.out.println(s.getName()+":"+s.getAge());
}
}
}
Student.java
public class Student {
//定义成员变量
private String name;
private int age;
/*无参构造方法
* 1、与类同名,且没有返回值,甚至连void都没有
* 2、构造出类的实例,且对实例进行初始化
* 3、用new创建对象,且完成对象进行初始化
* */
public Student() {
}
//有参构造方法
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
Java TreeSet集合 比较器排序Comparator的使用的更多相关文章
- 什么是泛型?,Set集合,TreeSet集合自然排序和比较器排序,数据结构-二叉树,数据结构-平衡二叉树
==知识点== 1.泛型 2.Set集合 3.TreeSet 4.数据结构-二叉树 5.数据结构-平衡二叉树 ==用到的单词== 1.element[ˈelɪmənt] 要素 元素(软) 2.key[ ...
- Java TreeSet集合排序 && 定义一个类实现Comparator接口,覆盖compare方法 && 按照字符串长度排序
package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.Ru ...
- Java TreeSet的定制排序
注:只贴出实现类 package Test3; import java.util.Comparator;import java.util.TreeSet; public class Test { pu ...
- 面试----java基础集合---------------------comparable和comparator 的区别
comparable接口 是主要是用来自定义类存储在主要是TreeSet,TreeMap(键)集合中存储时,自定通过实现这种接口得到自然排序的功能. comparator 接口 是主要是用来 ...
- Java - 简单的对象排序 - Comparator
注:对象排序,就是对对象中的某一字段进行比较,以正序或倒序进行排序. 例: 需要排序的对象: public class Person { public int age; public String n ...
- java自定义类型 比较排序 Comparator接口
String service_time = "6:00:00,7:00:00,8:00:00,9:00:00,10:00:00,11:00:00,12:00:00,13:00:00,14:0 ...
- list集合的排序Comparator和Collections.sort
一个例子 package sortt; import java.util.ArrayList; import java.util.Collections; import java.util.Compa ...
- Java基础集合简单总结
集合 Collection单列集合有List 和 Set List集合有: ArrayList集合 特点: 1.存取有序 可以重复 有索引 2.底层是数组实现,查询快,增删慢 ArrayList底层: ...
- Java 多条件复杂排序小结
前言 今天下午做了拼多多在牛客网上的在线笔试题,感觉自己的智商被鄙视到了···不过其中一道题的某一部分引起了我极大的兴趣,感觉可以总结一下,做好积累~ 题目的部分我拍照如下所示 这里面最复杂的就是第3 ...
随机推荐
- [TJOI2014] 匹配
注:此题无序,也无嵬 正文 我们这题求得事实上是一个最大费用最大流,最后的对每条边进行枚举,额然后,如果最大费用小了,就计入答案.. 算是,比较水吧 还有,一开始WA了两次是因为,dis应初始化为负无 ...
- JDK13.0.1安装与环境变量的配置(Win10平台为例)
一.下载与安装 Oracle官网下载:https://www.oracle.com/technetwork/java/javase/downloads/index.html,点击右侧下载 接受并下载对 ...
- clientHeight offsetTop scrollTop
- Window Api 通过账号密码访问共享文件夹
using System; using System.Runtime.InteropServices; namespace PushGCodeService { public class Shared ...
- iframe刷新另一个iframe
如果是程序: Response.Write("<script language=javascript>"); Response.Write ...
- arcgis10.2下载安装教程
ArcGIS Desktop 10.2 完全安装教程(含win7 32/64位+下载地址+亲测可用) 时间: 2014年08月20日 阅读: 622,262 分类: GIS探秘 标签: A ...
- linux100讲——03 什么是linux
1.linux 有两种含义: 一种是linus 编写的开源操作系统的内核 另一种是广义的操作系统 2.linux的第一印象 服务端操作系统和客户端操作系统要做的事情不一样 命令行操作方式与图形界面的差 ...
- 最短路-B - 六度分离
B - 六度分离 1967年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为“小世界现象(small world phenomenon)”的著名假说,大意是说,任何2个素不相识的人中间最多只隔着6 ...
- css实现聊天气泡效果
--------------------------------------- css功能强大,能实现很多炫 酷的效果,今天给大家分享 用css3绘制聊天气泡的方法: -------------- ...
- 书写makefile的注意点
1.空格 定义一个变量时用“foo = 1”这种形式,1后面千万不可以有空格,否则,foo的值为“1 ”.等于号和1之间的空格有无,并没有关系. 2.ifeq ifeq的形式是“ifeq ($(foo ...