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的操作。 例如简单的递归查找。 根据当前的分类找到相对应的所有子级对象。 如果使用传