java 对象多属性排序_Java的List集合按照对象的多个属性排序

Java的List集合按照对象的多个属性排序

public class Employee {

private int level;

private int salary;

private int years;

public int getLevel() {

return level;

}

public void setLevel(int level) {

this.level = level;

}

public int getSalary() {

return salary;

}

public void setSalary(int salary) {

this.salary = salary;

}

public int getYears() {

return years;

}

public void setYears(int years) {

this.years = years;

}

@Override

public String toString() {

return "Employee [level=" + level + ", salary=" + salary + ", years="

+ years + "]";

}

}

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ListEmployee list = new ArrayListEmployee();

Employee e = new Employee();

e.setLevel(1);

e.setSalary(300);

e.setYears(4);

list.add(e);

e = new Employee();

e.setLevel(1);

e.setSalary(500);

e.setYears(4);

list.add(e);

e = new Employee();

e.setLevel(2);

e.setSalary(500);

e.setYears(4);

list.add(e);

e = new Employee();

e.setLevel(1);

e.setSalary(300);

e.setYears(5);

list.add(e);

// Collections.sort(list, new ComparatorEmployee() {

// public int compare(Employee e2, Employee e1) {

// int a = e1.getLevel() - e2.getLevel();

// if (a != 0) {

// return a 0 -1 : 1;

// }

// a = e1.getSalary() - e2.getSalary();

// if (a != 0) {

// return a 0 -1 : 1;

// }

// a = e1.getYears() - e2.getYears();

// return a 0 -1 : 1;

// }

// });

Collections.sort(list, new ComparatorEmployee() {

public int compare(Employee e1, Employee e2) {

int a = e1.getLevel() - e2.getLevel();

if (a != 0) {

return a 0 1 : -1;

}

a = e1.getSalary() - e2.getSalary();

if (a != 0) {

return a 0 1 : -1;

}

a = e1.getYears() - e2.getYears();

return a 0 1 : -1;

}

});

// Employee [level=2, salary=500, years=4]

// Employee [level=1, salary=500, years=4]

// Employee [level=1, salary=300, years=5]

// Employee [level=1, salary=300, years=4]

// Employee [level=1, salary=300, years=4]

// Employee [level=1, salary=300, years=5]

// Employee [level=1, salary=500, years=4]

// Employee [level=2, salary=500, years=4]

// [level=1, salary=300, years=4]

// [level=1, salary=300, years=5]

// [level=1, salary=500, years=4]

// [level=2, salary=500, years=4]

for (Employee em : list) {

System.out.println(em);

}

}

}

Java的List集合按照对象的多个属性排序 相关文章

Java(6) | ArrayList

# 什么是ArrayList ArrayList是一个数组队列,相当于 动态数组。底层采用数组实现。 # 注意事项 泛型只能是引用类型,不能是基本类型 如果希望向集合arraylist中存储基本类型,必须使用基本类型对应的包装类 ArrayList中的操作不是线程安全的!所以,建议在

List集合对象中按照不同属性大小排序的实例

实例如下: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 package com.huad.luck; import java.util.ArrayList; import ja

小黄鸭系列java基础知识 | 基础语法:流程控制

基础语法:流程控制 前言 今天我们要探讨的是 java 的流程控制,流程简单来说就是就是做一件事的步骤,比如我们要创建一个 java 项目,第一步打开 ide 工具,第二步创建项目,第三步创建类,这就是一个流程,今天分享的就是 java 的流程控制语句,当然,对于

4.5 类型转换

4.5 类型转换 由于 Java 是强类型语言,所以要进行有些运算的时候,需要用到类型转换 graph LRA(低)....-B(高)C(byte,short,char)--D(int)--E(long)--F(float)--G(double) 运算中,不同类型的数据先转换为同一类型,然后进行运算 强制类型转换(高→低) pub

前端修仙之路-五、JavaScript原型初学者指南(1)

在JavaScript的世界中,万物皆对象。如果不处理对象,您将无法在JavaScript中走得很远。 它们是JavaScript编程语言几乎所有方面的基

Java根据视频的URL地址,获取视频时长

参考大佬的博客https://www.cnblogs.com/yoyoyu/p/14255264.html,可以不用下载视频而获取视频时长。 第一步:先引入Maven依赖 dependencies !-- jave核心包 -- dependency groupIdws.schild/groupId artifactIdjave-core/artifactId version2.4.6/version /

java基础课堂随记6

循环结构 while循环 do...while循环 for循环 在Java5中引入了一种主要用于数组的增强型for循环 while循环 while是最基本的循环,结构为: while(布尔值){ //循环内容} 只要布尔值为true,循环就会一直执行下去。 大多数情况是要让循环停止下来的,所以需要一

从问题入手,深入了解JavaScript中原型与原型链

从问题入手,深入了解JavaScript中原型与原型链 前言 开篇之前,我想提出3个问题: 新建一个不添加任何属性的对象为何能调用toString方法 如何让拥有相同构造函数的不同对象都具备相同的行为 instanceof关键字判断对象类型的依据是什么 要是这3个问题都能回

java单元测试之Mock静态方法

1. public final class AmountUtil { public static String CustomFormatWith2Digits(int amount) { return "1"; }} 2.引入依赖 dependency groupIdorg.mockito/groupId artifactIdmockito-core/artifactId version1.10.19/version scopetest/scope /depende

java8-Stream filter操作:多个List取并集

在项目中很容易遇到那种需要取并集或者交集的情况。 如果按照传统的方式,使用for循环嵌套for循环来操作,也可以实现。但是代码看起来没有那么优雅。 Java8提供了Stream的操作。 例如简单的递归查找。 根据当前的分类找到相对应的所有子级对象。 如果使用传

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值