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 ...
随机推荐
- 想在don‘t starve中活的更久?那饥荒海难攻略你怎么能不知道!
饥荒海难mac版是一款非常好玩的烧脑游戏.玩家将扮演一个勇敢的绅士科学家威尔逊,被一个恶魔困住并送到一个神秘的荒野世界,玩家必须利用异世界中的自然资源让自己存活下去,并且抵御各种异世界生物的威胁.想在 ...
- opencv —— 官方 示例程序
OpenCV 官方提供的示例程序,具体位于...\opencv\sources\samples\cpp 目录下. ...\opencv\sources\samples\cpp\tutorial_cod ...
- burpsuite抓取小程序的数据包(指定DNS)
目标:burpsuite抓取微信小程序的数据包,而且该系统需指定DNS!否则无法访问! 大家都知道小程序是https传输的,所以手机端是需要安装burp证书的. 已忽略安装证书的步骤,可自己百度搜索, ...
- thinkphp5.0 insert添加数据
首先引入文件:use think\Db; public function zhuce(){ $username = input("username");//手机号 $passwor ...
- oracle基础知识点
一.count(*).count(1).count(字段名)的区别select count(*) from t_md_inst --153797 --包含字段为null 的记录select count ...
- urllib模块提供的urlretrieve()函数使用
urllib模块提供的urlretrieve()函数,urlretrieve()方法直接将远程的数据下载到本地 注意:若是网站有反爬虫的话这个函数会返回 403 Forbidden 参数url:传入的 ...
- ASP.NET简介及网页基础知识
ASP:Active Server Page. asp.net属于.NET Framework的一部分,命名空间是System.Web,主要用于网络程序的开发. .net版本演化(asp.net和.n ...
- dva-loading 实践用法
dva 中页面过渡效果封装的很好,下面介绍常用的两个 js 库. 之前对 dva-loading 理解存在误区,认为只要在 index.js 中配置一下就没事了,事实上 dva-loading 只是提 ...
- KC开发组官方网站
KC开发组,简称KC,又叫KC Team,是Kong Che Team(空车开发组)的缩写 是由ordosyz(某乡村小学)的CSP2019退役OIer(信息学奥林匹克竞赛选手) 于2020年2月23 ...
- Winfom递归绑定树节点
/// <summary> /// 绑定树节点 /// </summary> /// <param name="pid"></param& ...