`
331008019
  • 浏览: 22044 次
  • 性别: Icon_minigender_1
  • 来自: 湖南株洲
社区版块
存档分类
最新评论

Java中的List按照元素的属性进行排序

    博客分类:
  • Java
阅读更多

主要用到: Collections.sort()方法:

 

1. JavaBean —— Content.java:

package com.hmw.listsort;

public class Content {

	private long key;

	private String name;

	public Content(long key, String name) {
		this.key = key;
		this.name = name;
	}

	public long getKey() {
		return key;
	}

	public void setKey(long key) {
		this.key = key;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

 

 

 

2. 进行比较的类 —— ContentComparator.java:

package com.hmw.listsort;

import java.util.Comparator;

public class ContentComparator implements Comparator<Content>{
	public int compare(Content o1, Content o2) {

		//将 null 排到最后
		if(o1 == null){
			return 1;
		}
		if(o2 == null || !(o2 instanceof Content)){
			return -1;
		}
		
		long key1 = o1.getKey();
		long key2 = o2.getKey();
		return key1 > key2 ? 1 : key1 < key2 ? -1 : 0;
		
		/*
		//如果想要按照 name 字段进行排序, 只需将最后三行代码改为下面这一行即可
		return o1.getName().compareTo(o2.getName());
		*/
		
	}
}

 

 

 

3. 测试类 —— Test Class —— CompareClient.java

package com.hmw.listsort;

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

public class CompareClient {
	public static void main(String[] args) {
		List<Content> list = new ArrayList<Content>();
		list.add(null);
		list.add(new Content(15000, "---15000--"));
		list.add(new Content(10000, "---10000---"));
		list.add(new Content(20000, "---20000---"));
		list.add(null);
		list.add(new Content(25000, "---25000---"));
		list.add(new Content(13000, "---13000---"));
		list.add(new Content(15000, "---15000---"));
		list.add(new Content(89000, "---89000---"));
		Collections.sort(list, new ContentComparator());
		
		/*
		//如果要按照降序排列再加上这一行代码即可
		Collections.reverse(list);
		*/
		
		for (Content content : list) {
			if (content == null) {
				System.out.println("null");
			} else {
				System.out.println("content.getName()\t" + content.getName());
			}
		}
	}
}

 

输出结果如下:

content.getName() ---10000---
content.getName() ---13000---
content.getName() ---15000--
content.getName() ---15000---
content.getName() ---20000---
content.getName() ---25000---
content.getName() ---89000---
null
null

分享到:
评论

相关推荐

    如何实现java8 list按照元素的某个字段去重

    主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下

    Python对List中的元素排序的方法

    首先定义一个compare函数: ...要求ListA中的元素有value这个属性才行,当然也可以把value换成ListA中的元素的其他共有属性也可以。感觉和Java差不多。 总结 以上所述是小编给大家介绍的Python对List中的元素排

    java面试宝典

    94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)(D) 22 95、以下哪些属于Session的方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、...

    JAVA JDK8 List分组获取第一个元素的方法

    今天小编就为大家分享一篇关于JAVA JDK8 List分组获取第一个元素的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    java实现把一个List集合拆分成多个的操作

    主要介绍了java实现把一个List集合拆分成多个的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    根据某个属性对List中的所有对象分组,该属性值相同的对象分到一个组

    前段时间跟公司前端对接的时候,一个简单的数据库查询,但是前端说将结果按某个属性分组,每组单独一个集合,集合第一个元素为该属性,第二个元素为该属性值相同的所有对象集合,由于是小白一个,这个数据整理也是花...

    Java开发技术大全(500个源代码).

    listFields.java 利用反射机制获取成员属性列表 listMethods.java 利用反射机制获取成员方法列表 loadClass.java 动态装载一个类 Shape.java 一个用于测试的简单类 useArray1.java 用反射机制使用数组示例1 ...

    java 面试题 总结

    栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 19、forward 和redirect的区别 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器...

    Java开发详解.zip

    031305_【第13章:Java类集】_排序及重复元素说明笔记.pdf 031306_【第13章:Java类集】_SortedSet接口笔记.pdf 031307_【第13章:Java类集】_Iterator接口笔记.pdf 031308_【第13章:Java类集】_ListIterator接口...

    JAVA面试题最全集

    数据结构,如何遍历List中的元素? 如果要按照键值保存或者访问数据,使用什么数据结构? 要掌握Collection相关的接口和类的使用 56.使用StringBuffer类与String类进行字符串连接时有何区别? 57.调用Thread类的...

    习----题-Java-Web程序设计教程-[共2页].pdf

    (2)在测试类中生成多个学生类的对象,放入 TreeSet 中,要求按照 3 门课总成绩从高到低 排序,总成绩相等按学号排序。输出排序结果。 注意实现 Comparator 接口的 compare(Object obj1,Object obj2)函数。 4.以 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     8.1 Java对象在JVM中的生命周期  8.2 理解Session的缓存  8.2.1 Session的缓存的作用  8.2.2 脏检查及清理缓存的机制  8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的...

    Java面试宝典-经典

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    疯狂JAVA讲义

    学生提问:Java为什么要对这些数据进行缓存呢? 67 3.7.6 逻辑运算符 67 3.7.7 三目运算符 68 3.7.8 运算符的结合性和优先级 69 3.8 本章小结 70 本章练习 70 第4章 流程控制和数组 71 4.1 顺序结构 72 4.2 ...

    Java面试宝典2010版

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    java面试题大全(2012版)

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

Global site tag (gtag.js) - Google Analytics