根据List集合中的对象属性排序
首先创建一个Student对象,里面有三个属性,分别是int类型,String类型,Date类型
package com.sinoway.cisp.test; import java.text.SimpleDateFormat;
import java.util.Date; public class Student { private int age;
private String name;
private Date birthday; public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} @Override
public String toString() {
return "Student [age=" + age + ", name=" + name + ", birthday="
+ new SimpleDateFormat("yyyy-MM-dd").format(birthday) + "]";
// 注意,为了方便看,这里将Date类型的birthday格式化为"yyyy-MM-dd"的String类型
} }
1、给int类型的age从小到大排序
package com.sinoway.cisp.test; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; import org.junit.Test; public class ObjectSortTest { @SuppressWarnings("all")
public static void intSort(List<Student> studentList) {
Collections.sort(studentList, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Student student1 = (Student) o1;
Student student2 = (Student) o2;
if (student1.getAge() > student2.getAge()) {
return 1;
} else if (student1.getAge() == student2.getAge()) {
return 0;
} else {
return -1;
}
}
});
} @Test
public void intSortTest() throws Exception { Student student1 = new Student();
student1.setAge(18);
student1.setName("C");
student1.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2018-03-20"));
Student student2 = new Student();
student2.setAge(16);
student2.setName("B");
student2.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2018-01-20"));
Student student3 = new Student();
student3.setAge(20);
student3.setName("A");
student3.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2018-02-20")); List<Student> studentList = new ArrayList<>();
studentList.add(student1);
studentList.add(student2);
studentList.add(student3);
for (Student student : studentList) {
System.out.println(student.toString());
}
System.err.println("----------");
intSort(studentList);
for (Student student : studentList) {
System.out.println(student.toString());
}
} }
输出为:
2、给String类型的name排序
@SuppressWarnings("all")
public static void stringSort(List<Student> studentList) {
Collections.sort(studentList, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Student student1 = (Student) o1;
Student student2 = (Student) o2;
return student1.getName().compareTo(student2.getName());
}
});
}
输出为:
3、给Date类型的birthday排序
@SuppressWarnings("all")
public static void dateSort(List<Student> studentList) {
Collections.sort(studentList, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Student student1 = (Student) o1;
Student student2 = (Student) o2;
if (student1.getBirthday().getTime() > student2.getBirthday().getTime()) {
return 1;
} else if (student1.getBirthday().getTime() == student2.getBirthday().getTime()) {
return 0;
} else {
return -1;
}
}
});
}
输出为:
根据List集合中的对象属性排序的更多相关文章
- 对list集合中的对象进行排序(转载)
原文链接:http://blog.csdn.net/veryisjava/article/details/51675036 Collections对List集合中的数据进行排序 有时候需要对集合中的元 ...
- List集合中的对象进行排序
类A: public class A implements Comparable<A>{ private Integer id; private String name; public A ...
- Java:List集合内的对象进行排序
List集合中的对象进行排序,除了for外,还有java的Collections对象来对摸个集合进行排序的用法. 比如说我有一个List集合,集合元素为: public class TaskAutoE ...
- 如何对List集合中的对象进行按某个属性排序
我们在实际的开发工作中,经常会碰到排序的问题,如题,我们如何针对List集合中的某一个属性进行排序 当list集合中的元素类型是我们自定义类型时,有两种对list中的元素进行排序的方法: 方法一 让l ...
- C#判断数组或集合中是否含有属性值为value的对象
/// <summary> /// 判断list中是否有某个对象的Id_srvplan为value /// </summary> /// <param name=&quo ...
- 2018.9.17 面试问题-----如何对List集合中的元素进行排序?
Collections对List集合中的数据进行排序 有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到 Java中提供的对集合进行操作的工具类Collections,其中的sort方法 先 ...
- 对List集合中的元素进行排序
原文:http://blog.csdn.net/veryisjava/article/details/51675036 Collections对List集合中的数据进行排序 有时候需要对集合中的元素按 ...
- json对象数组按对象属性排序
var array = [ {name: 'a', phone: 1, value: 'val_4'}, {name: 'b', phone: 5, value: 'val_3'}, {name: ' ...
- List集合中的对象按照某个字段去重实现
package com.liying.banana.user; import java.util.ArrayList; import java.util.Comparator; import java ...
随机推荐
- WebSocket(3)---实现一对一聊天功能
实现一对一聊天功能 功能介绍:实现A和B单独聊天功能,即A发消息给B只能B接收,同样B向A发消息只能A接收. 本篇博客是在上一遍基础上搭建,上一篇博客地址:[WebSocket]---实现游戏公告功能 ...
- C#版 - Leetcode 306. 累加数 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- C#版(打败99.28%的提交) - Leetcode 347. Top K Frequent Elements - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- 模板模式之clone()方法
clone()方法的使用,体现了模板模式的思想,常见用法可以参考:http://blog.csdn.net/zhangjg_blog/article/details/18369201
- 带着新人学springboot的应用05(springboot+RabbitMQ 上)
这次就来说说RabbitMQ,这个应该不陌生了,随便一查就知道这个是用来做消息队列的.(注意:这一节很多都是概念的东西,需要操作的比较少) 至于AMQP协议(Advanced Message Queu ...
- Linux服务器时间相关命令记录
前言 以往安装服务器时间都是正常,但是最近服务器的时间经常出现问题,所以在安装配置完成服务器之后需要对服务器的时间进行测试,如果服务器时间异常,那么当程序去取系统时间的时候就会出现问题. 时间相关命令 ...
- Typora中的Markdown教程
Tutorial of markdown in Typora 工欲善其事,必先利其器 如上所说,这里给大家安利一款高BIG的利器Typora,这是一款文艺青年(装逼)必备的用于编写markdown的打 ...
- msf登陆Windows 2
使用ms17_010(永恒之蓝)进行攻击登陆(XP) 1)加载模块 2)连接靶机 3)设置payload 4)设置lhost(攻击主机IP) 5)exploit进行攻击登陆
- python之错误调试
无论谁写的程序,必定会存在bug,解决bug需要我们去调试程序.于是乎,在Python中,就会好几种调试手段,如print.assert.logging.pdb.pdb.set_trace() 一.使 ...
- WPF 窗口大小自适应
在设置桌面不同分辨率以及较大DPI下,窗口如何显示的问题. 方案一 设置窗口最大值和最小值显示 通过对比当前屏幕的可显示区域,将窗口高宽最大值和最小值,设置为窗口的实际高宽(此例中仅设置高度) 界面设 ...