根据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 ...
随机推荐
- 【java设计模式】(4)---工厂模式(案例解析)
设计模式之工厂模式 工厂模式分三种:简单工厂模式(也叫静态工厂模式),工厂方法模式(也叫多形性工厂),抽象工厂模式(也叫工具箱)下面会一一举例. 一.概念 1.什么是工厂模式 这种类型的设计模式属于创 ...
- 通用网页调用本地应用程序方案(windows平台)
一.更新注册表 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\receiveOutOfArg] "URL Protocol& ...
- AspNetCore 基于流下载文件与示例代码
昨天说了,AspNetCore如何进行上传文件,其中写了两种方式ajax与模型,其文章地址为:https://www.cnblogs.com/ZaraNet/p/9949167.html 那么既然有上 ...
- Java 多线程(一)—— 概念的引入
并发和并行 并行:指两个或多个时间在同一时刻发生(同时发生): 并发:指两个或多个事件在一个时间段内发生. 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 C ...
- Lucene 04 - 学习使用Lucene的Field(字段)
目录 1 Field的特性 2 常用的Field类型 3 常用的Field种类使用 3.1 准备环境 3.2 需求分析 3.3 修改代码 3.4 重新建立索引 1 Field的特性 Document( ...
- angr进阶(4)从任意位置开始
从程序的任意位置开始可以大大的减少测试的时间,使用的方法是控制程序运行到某时刻的寄存器的值来进行的.asisctffinals2015_fake p = angr.Project("fake ...
- 通过 Ansible 安装 Docker
本文的演示环境为 ubuntu 16.04. 先在 Ansible Galaxy 搜索 docker,由 geerlingguy 贡献的 docker role 是目前最受欢迎的: 通过 ansibl ...
- 利用Sklearn实现加州房产价格预测,学习运用机器学习的整个流程(包含很多细节注解)
Chapter1_housing_price_predict .caret, .dropup > .btn > .caret { border-top-color: #000 !impor ...
- sed从入门到深入的使用心得
本人已经此系列的sed文章整理到pdf中,欢迎下载:玩透sed:探究sed原理 sed系列文章: sed修炼系列(一):花拳绣腿之入门篇sed修炼系列(二):武功心法(info sed翻译+注解)se ...
- iOS 字典实现原理
在目前的开发中,NSDictionary是经常被使用,不过很少人会研究字典NSDictionary底层的实现,下面我们来一起看一下NSDictionary的实现原理. 一.字典原理 字典通过使用- ( ...