Comparator与Comparable实现List中某一对象属性排序
//实体类实现 Comparable接口 进行降序排序
public class TestCompare implements Comparable<TestCompare>{
private String name; private int 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 String toString() {
return "TestCompare{" +
"name='" + name + '\'' +
", age=" + age +
'}';
} @Override
public int compareTo(TestCompare o) {
//降序 1,-1返回位置交换升序
//实现comparator接口实现比较器对象
//逻辑与comparable一样
public class TestComparator implements Comparator<TestCompare> { public int compare(TestCompare o1, TestCompare o2) { if(o1.getAge()<o2.getAge()){
return 1;
}else if(o1.getAge()==o2.getAge()){
return 0;
}else {
return -1;
}
}
}
if (this.getAge()<o.getAge()){
return 1;
}else if(this.getAge() == o.getAge()){
return 0;
}else {
return -1;
}
}
}
public class Test_fori {
public static void main(String[] args) {
TestCompare t = new TestCompare();
TestCompare testCompare1 = new TestCompare();
TestCompare testCompare2 = new TestCompare();
TestCompare testCompare3 = new TestCompare();
testCompare1.setName("cui");
testCompare1.setAge(58);
testCompare2.setName("hhh");
testCompare2.setAge(99);
testCompare3.setName("hih");
testCompare3.setAge(12);
ArrayList<TestCompare> list = new ArrayList<>();
list.add(testCompare1);
list.add(testCompare2);
list.add(testCompare3);
for (TestCompare t1:list
) {
System.err.println(t1);
}
//comparator方式
// Collections.sort(list,new TestComparator());
//comparable方式
Collections.sort(list);
System.err.println("================");
for (TestCompare t1:list
) {
System.err.println(t1);
}
}
根据age进行降序排序
Comparator与Comparable实现List中某一对象属性排序的更多相关文章
- CorelDRAW中如何复制对象属性详解
复制对象属性是一种比较特殊.重要的复制方法,它可以方便而快捷地将指定对象中的轮廓笔.轮廓色.填充和文本属性通过复制的方法应用到所选对象中.本教程将详解CorelDRAW中如何复制对象属性. Corel ...
- vue2.x版本中Object.defineProperty对象属性监听和关联
前言 在vue2.x版本官方文档中 深入响应式原理 https://cn.vuejs.org/v2/guide/reactivity.html一文的解释当中,Object.defineProperty ...
- iOS探索:对NSArray中自定义的对象进行排序
http://mobile.51cto.com/hot-434804.htm 我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天 ...
- javascript中的array对象属性及方法
Array 对象 Array 对象用于在单个的变量中存储多个值. 创建 Array 对象的语法: new Array(); new Array(size); new Array(element0, e ...
- java 中根据类的属性排序
package edu.del; import java.util.ArrayList; import java.util.Collections; import java.util.List; im ...
- List 中对象属性排序
有几个方法可以实现:让 Student 实现Comparable接口,或是实例化一 个比较器, 现在用 Comparator 比较器实例来做一个:ComparableTest.java import ...
- 通过实现Comparable接口结合TreeSet来对对象自动排序
经过会遇到这样的情况,对于某个对象数组或者链表要按照一定的规则进行排序,那么我们该怎么做呢? 如遇到这样的需求: 1.需求1 对于学生对象按照年龄进行排序,年龄小的排在前面. 单单看到这样的需求,实现 ...
- 根据List集合中的对象属性排序
首先创建一个Student对象,里面有三个属性,分别是int类型,String类型,Date类型 package com.sinoway.cisp.test; import java.text.Sim ...
- js中json对象数组按对象属性排序(sort方法)---2(根据拼音排序汉字和排序英文)
本例主要实现 中文汉字按拼音排序的方法和英文按照首字母排序的方法. 要排序的数据: //要排序的数据 let data = [ {chinese: '蔡司', english: 'Chase'}, { ...
- js中json对象数组按对象属性排序---1
转载:https://www.cnblogs.com/jasonwang2y60/p/6656103.html 在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json数据,需要我们根据js ...
随机推荐
- 不用VS,使用NET 7.0 SDK (v7.0.101)编程c#控制台应用程序方法
摘要:如果没有vs环境,也可以编程c#控制台应用程序学习c#,方法步骤有下面几个步骤. 1.下载NET 7.0 SDK (v7.0.101)安装 网址https://dotnet.microsoft. ...
- c-->static关键字的使用
static关键字的使用 static:静态 未使用static 在下列代码中变量a是有生命周期的,调用完后就会被销毁 所以for循环每次调用test函数打印的结果都是2 #include <s ...
- openframeworks 设置不显示控制台窗口
1.设置Linker 下的System->选择Windows 2.设置入口函数,然后编译就可以了 int APIENTRY wWinMain(_In_ HINSTANCE hInstance, ...
- docker kafka 一键搞定
1. docker network create app-tier 2. docker run -d --name zookeeper-server \ --network app-tier \ -e ...
- .net core 序列日志Serilog
Serilog 是一个用于 .NET 应用程序的诊断日志库.它易于设置,具有干净的 API,并且可以在所有最新的 .NET 平台上运行.尽管即使在最简单的应用程序中它也很有用,但 Serilog 对结 ...
- Win10官方1909版本无法打开windows安全中心中病毒和威胁防护的实时保护解决方案。
进入手痒难耐,将电脑操作系统重新安装了win10 专业工作站版 1909版,但是装完软件激活后,发现windows安全中心的"病毒和威胁防护"中的所有项目都是关闭的,试着重新安装也 ...
- GitHub创建仓库导入项目
1.进入主页,点击+号 2.填写仓库名称 3.记住网址! 4.项目所在文件夹路径 5.打开Git Bash 6.输入命令 $ cd C: $ cd AndroidTasks $ cd MusicPla ...
- Ubuntu 复制粘贴快捷键
打开命令行terminal ctrl+alt+t 复制粘贴 ctrl+shift+c ctrl+shift+v /usr/share/applications/ 这个文件夹可以创建桌面快捷方式 换源 ...
- 剑指 Offer II Trie前缀树
初始化 数组初始化在class外的话 要memset 在主函数里面memset 在class内不用 062. 实现前缀树 class Trie { public: /** Initialize you ...
- docker 搭建 nginxconfig.io 文档
docker镜像仓库 https://hub.docker.com/r/devopstestlab/nginxconfig.io 获取镜像 docekr pull devopstestlab/ngin ...