`

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

    博客分类:
  • java
阅读更多
主要用到: Collections.sort()方法:

1. JavaBean —— Content.java:
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:
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
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

感谢 http://hemingwang0902.iteye.com/blog/402794
分享到:
评论

相关推荐

    如何实现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