文档章节

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

明舞
 明舞
发布于 2016/03/29 11:16
字数 339
阅读 161
收藏 1

集合类List存放的数据,默认是按照放入时的顺序存放的,比如依次放入A、B、C,则取得时候,则也是A、B、C的顺序,实际场景中,有时我们需要根据自定义的规则对List中的元素进行排序,该如何实现呢?看下面小例子:

package test.tool.gui.dbtool.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Test {

	public static void main(String[] args) {
		
		List<Student> list = new ArrayList<Student>();
		
		//创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中
		Student s1 = new Student();
		s1.setAge(20);
		Student s2 = new Student();
		s2.setAge(19);
		Student s3 = new Student();
		s3.setAge(21);
		list.add(s1);
		list.add(s2);
		list.add(s3);
		
		System.out.println("排序前:"+list);
		
		Collections.sort(list, new Comparator<Student>(){

			/*
			 * int compare(Student o1, Student o2) 返回一个基本类型的整型,
			 * 返回负数表示:o1 小于o2,
			 * 返回0 表示:o1和o2相等,
			 * 返回正数表示:o1大于o2。
			 */
			public int compare(Student o1, Student o2) {
			
				//按照学生的年龄进行升序排列
				if(o1.getAge() > o2.getAge()){
					return 1;
				}
				if(o1.getAge() == o2.getAge()){
					return 0;
				}
				return -1;
			}
		}); 
		System.out.println("排序后:"+list);
	}
}
class Student{
	
	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return getAge()+"";
	}
}

执行结果:

排序前:[20, 19, 21]
排序后:[19, 20, 21]

当然对象的属性可以多个,比如按年龄升序,按成绩降序等


© 著作权归作者所有

明舞
粉丝 230
博文 424
码字总数 516555
作品 0
程序员
私信 提问
加载中

评论(1)

黄DT
黄DT
哈哈哈哈,就是这样的
【转载】C#中使用OrderBy和ThenBy等方法对List集合进行排序

在C#的List操作中,针对List对象集合的排序我们可以使用OrderBy、OrderByDescending、ThenBy、ThenByDescending等方法按照特定的对象属性进行排序,其中Orderby表示按指定的第一个属性升序排...

江湖逍遥
05/12
0
0
【转载】 C#中List集合使用OrderByDescending方法对集合进行倒序排序

在C#的List集合操作中,有时候需要针对List集合进行排序操作,如果是对List集合按照元素对象或者元素对象的某个属性进行倒序排序的话,可以使用OrderByDescending方法来实现,OrderByDescen...

江湖逍遥
06/16
0
0
java开发中list自身排序

java 实现list中对象自身属性的排序 Collections.sort(list, new Comparator<myPlayFile>() { public int compare(myPlayFile arg0, myPlayFile arg1) { int flag = arg0.lastModified().co......

EDIAGD
2014/01/09
158
0
Struts2操作集合标签汇总

Iterator标签主要用于对集合进行扫描,这里的集合包括数组、List、Set以及Map对象。Iterator标签包含如下3个属性。 Value:可选,该属性指定被迭代的集合。被迭代的集合通常使用OGNL表达式指...

Jialy
2013/12/25
954
0
对list中的元素按照元素的属性进行排序

用collection.sort()方法对list集合排序 第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class User implements Comparable<User>{ private String......

universeye
2014/05/21
4.9K
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
6分钟前
4
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
9分钟前
3
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
35分钟前
3
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
5
0
前端技术之:webpack热模块替换(HMR)

第一步:安装HMR中间件: npm install --save-dev webpack-hot-middleware 第二步:webpack配置中引入webpack对象 const webpack = require('webpack’); 第三步:增加devServer配置项: ho......

popgis
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部