//实体类实现 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中某一对象属性排序的更多相关文章

  1. CorelDRAW中如何复制对象属性详解

    复制对象属性是一种比较特殊.重要的复制方法,它可以方便而快捷地将指定对象中的轮廓笔.轮廓色.填充和文本属性通过复制的方法应用到所选对象中.本教程将详解CorelDRAW中如何复制对象属性. Corel ...

  2. vue2.x版本中Object.defineProperty对象属性监听和关联

    前言 在vue2.x版本官方文档中 深入响应式原理 https://cn.vuejs.org/v2/guide/reactivity.html一文的解释当中,Object.defineProperty ...

  3. iOS探索:对NSArray中自定义的对象进行排序

    http://mobile.51cto.com/hot-434804.htm 我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天 ...

  4. javascript中的array对象属性及方法

    Array 对象 Array 对象用于在单个的变量中存储多个值. 创建 Array 对象的语法: new Array(); new Array(size); new Array(element0, e ...

  5. java 中根据类的属性排序

    package edu.del; import java.util.ArrayList; import java.util.Collections; import java.util.List; im ...

  6. List 中对象属性排序

    有几个方法可以实现:让 Student 实现Comparable接口,或是实例化一 个比较器, 现在用 Comparator 比较器实例来做一个:ComparableTest.java import  ...

  7. 通过实现Comparable接口结合TreeSet来对对象自动排序

    经过会遇到这样的情况,对于某个对象数组或者链表要按照一定的规则进行排序,那么我们该怎么做呢? 如遇到这样的需求: 1.需求1 对于学生对象按照年龄进行排序,年龄小的排在前面. 单单看到这样的需求,实现 ...

  8. 根据List集合中的对象属性排序

    首先创建一个Student对象,里面有三个属性,分别是int类型,String类型,Date类型 package com.sinoway.cisp.test; import java.text.Sim ...

  9. js中json对象数组按对象属性排序(sort方法)---2(根据拼音排序汉字和排序英文)

    本例主要实现 中文汉字按拼音排序的方法和英文按照首字母排序的方法. 要排序的数据: //要排序的数据 let data = [ {chinese: '蔡司', english: 'Chase'}, { ...

  10. js中json对象数组按对象属性排序---1

    转载:https://www.cnblogs.com/jasonwang2y60/p/6656103.html 在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json数据,需要我们根据js ...

随机推荐

  1. 已拦截跨源请求:同源策略禁止读取位于 http://192.168.2.104:8080/sockjs-node/info?t=1615356410656 的远程资源。(原因:CORS 请求未能成功)

    本人用的是火狐浏览器 是由于版本过低导致的被拦截,更新火狐为最新版本即可

  2. e-flow归档流程如何修改附件

    OQ有时候要把CRB流程中已结束的单子替换一个附件,来应付客户的Audit.到后台CRB库中的admin for change,找到那张单子替换其中的值,变成在流转中的状态,就可以替换附件了. 其他流 ...

  3. Docker之Redis保姆级别安装

    Docker之Redis保姆级别安装: 如果觉得样式不好:跳转即可 http://www.lifengying.site/(md文件复制过来有些样式会不一样) 学英语网站项目:自己先保证Redis.N ...

  4. 如何使用postman

    一. 了解postman 1. 什么是postman? ------ 软件测试用来做接口测试的工具. 2. 如何下载postman ------ https://www.getpostman.com/ ...

  5. git prior sync failed; rebase still in progress

    方案一: 将这个git直接删掉,rm common/ -rf 然后再回到项目根目录repo sync 方案二: git rebase --abort

  6. 【傻瓜式教学】apache2 管理员用户运行(php无权限问题

    apache2 管理员用户运行(php无权限问题 代码亲身试过,绝无问题 apache版本: Server version: Apache/2.4.38 (Debian) Server built: ...

  7. sql执行多条语句

    问题背景: 今天想在xml里面写一个sql,执行批量修改, update question_rules set score=${rule.score}, data_describe=#{rule.da ...

  8. webpack的加载器兼容配置一览

    "devDependencies": { "css-loader": "^3.2.1", "file-loader": ...

  9. 移动web_平面转换

    平面转换 平面 平移 旋转 缩放 概念:使用transform属性实现元素的位移.旋转.缩放等效果 注意点:行内元素所有的平面转换是没有效果的 平面: 平面转换的平面指的是二维平面(2D)只有X和Y轴 ...

  10. 谈谈mysql的主键和外键

    主键:保证数据的唯一性,非空且唯一,一般设置主键的语法为:字段 类型 PRIMARY KEY;或者 字段 类型,PRIMARY KEY(字段名) 外键:保证数据的完整性,一致性.一般设置的外键关联的是 ...