`
jbgtwang
  • 浏览: 21786 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java集合中对象某属性比较排序Comparable与Comparator

阅读更多

要对集合中的对象的某属性进行排序有两种方式。

a. 一种是要排序对象类实现comparable接口的compareTo方法;然后把对象放入list;然后调用Collections.sort(list);
b. 一种是不对要排序对象类做任何改动,创建Comparator接口的实现类C;然后 把对象放入list;然后调用Collections.sort(list, C);

 

a.eg

----------------------------------

public class User implements Comparable<User>{
    private String name;
    private int age;
    private int gender;
    private String address;
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * @return the age
     */
    public int getAge() {
        return age;
    }
    /**
     * @param age the age to set
     */
    public void setAge(int age) {
        this.age = age;
    }
    /**
     * @return the gender
     */
    public int getGender() {
        return gender;
    }
    /**
     * @param gender the gender to set
     */
    public void setGender(int gender) {
        this.gender = gender;
    }
    /**
     * @return the address
     */
    public String getAddress() {
        return address;
    }
    /**
     * @param address the address to set
     */
    public void setAddress(String address) {
        this.address = address;
    }
    /**
     *
     */
    public User() {
        super();
    }
    /**
     * @param name
     * @param age
     * @param gender
     * @param address
     */
    public User(String name, int age, int gender, String address) {
        super();
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.address = address;
    }

    @Override
    public int compareTo(User o) {
        if(o!=null){
            if(this.getAge()>o.getAge()){

               return 1;
            }else if(this.getAge()==o.getAge()){

               return 0;

            }

       }
        return -1;
    }
}

-------------------------------------------main

List<User> ulist = new ArrayList<User>();
ulist.add(new User("wangbo",29,1,"长沙"));
ulist.add(new User("wumei",44,1,"株洲"));
ulist.add(new User("zhangjie",19,1,"岳阳"));
ulist.add(new User("lihua",36,1,"长沙"));
ulist.add(new User("zhangchangzhe",19,1,"衡阳"));

Collections.sort(list);

for(User u:ulist){
            System.out.println(u.getName()+"\t"+u.getAge()+"\t"+u.getAddress());
}

 

==============================================

b.eg

--------------------------------

public class User {
    private String name;
    private int age;
    private int gender;
    private String address;
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * @return the age
     */
    public int getAge() {
        return age;
    }
    /**
     * @param age the age to set
     */
    public void setAge(int age) {
        this.age = age;
    }
    /**
     * @return the gender
     */
    public int getGender() {
        return gender;
    }
    /**
     * @param gender the gender to set
     */
    public void setGender(int gender) {
        this.gender = gender;
    }
    /**
     * @return the address
     */
    public String getAddress() {
        return address;
    }
    /**
     * @param address the address to set
     */
    public void setAddress(String address) {
        this.address = address;
    }
    /**
     *
     */
    public User() {
        super();
    }
    /**
     * @param name
     * @param age
     * @param gender
     * @param address
     */
    public User(String name, int age, int gender, String address) {
        super();
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.address = address;
    }
    
}

 

------------------------------

import java.util.Comparator;

public class ComparatorImpl implements Comparator<User>{

    @Override
    public int compare(User o1, User o2) {
        
        if(null!=o1 && null!=o2){
            if(o1.getAge() >o2.getAge()){
                return 1;
            }else if(o1.getAge() ==o2.getAge()){
                return 0;
            }
        }
        return -1;
    }

}

-----------------------------------main

List<User> ulist = new ArrayList<User>();
        ulist.add(new User("wangbo",29,1,"长沙"));
        ulist.add(new User("wumei",44,1,"株洲"));
        ulist.add(new User("zhangjie",19,1,"岳阳"));
        ulist.add(new User("lihua",36,1,"长沙"));
        ulist.add(new User("zhangchangzhe",19,1,"衡阳"));
        Collections.sort(ulist, new ComparatorImpl());
        for(User u:ulist){
            System.out.println(u.getName()+"\t"+u.getAge()+"\t"+u.getAddress());
        }

 

转自:http://blog.csdn.net/jbgtwang/article/details/6952459

分享到:
评论

相关推荐

    java List中对象多属性排序及各属性排序设置

    总结来说,Java中的List可以通过自定义Comparator或者利用泛型和方法引用来实现对象多属性的动态排序。这种技术在处理复杂数据结构时非常有用,使得代码更加简洁且易于维护。通过学习和实践这部分内容,开发者可以...

    JAVA 对象数组按照多个属性进行排序

    在Java编程中,对象数组排序是一项常见的任务,特别是在处理复杂数据结构时。当我们需要根据对象的多个属性进行排序时,情况会变得稍微复杂。本文将深入探讨如何在Java中实现这个功能,结合给出的标签“源码”和...

    Java中Comparable和Comparator的区别

    在Java编程语言中,Comparable和Comparator接口是两个非常重要的组件,它们主要用来进行对象的比较和排序。了解它们之间的区别对于提升代码的可维护性和灵活性至关重要。 Comparable接口来源于java.lang包,它定义...

    java版本List中对象多属性排序.rar

    在这个“java版本List中对象多属性排序.rar”压缩包中,我们可能找到了一个关于如何在Java中实现此类排序的示例或教程。 首先,让我们理解基本概念。在Java中,`List`接口是`Collection`框架的一部分,它允许我们...

    java中Comparable和Comparator的区别

    在Java编程语言中,Comparable和Comparator接口是两个重要的概念,它们都用于对象的排序,但有着不同的使用场景和特点。本文将深入探讨这两个接口的区别,以及它们在实际开发中的应用。 首先,我们来了解一下...

    Comparable与Comparator的区别Java开

    在Java编程语言中,`Comparable`接口和`Comparator`接口是两种重要的排序机制,它们用于对集合中的对象进行比较和排序。理解它们的区别对于任何Java开发者来说都是至关重要的。 首先,`Comparable`接口位于`java....

    JAVA集合的使用(List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类、equals、hashCode)

    要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode

    java集合某个字段按照中文拼音排序.docx

    Java集合某个字段按照中文拼音排序是Java开发中经常遇到的问题。对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用Comparable接口 在Java中,我们可以使用...

    List对象集合的排序:比较器Comparator(简单例子)

    `Comparator`接口是Java集合框架中的一个重要工具,对于理解和掌握数据结构的排序功能至关重要。通过深入理解并熟练运用`Comparator`,可以提高代码的可读性和可维护性,更好地满足实际编程中的需求。

    对比Java中的Comparable排序接口和Comparator比较器接口

    在Java编程语言中,Comparable和Comparator接口用于对对象进行比较和排序。这两个接口在很多情况下都能派上用场,但它们的应用场景和实现方式有所不同。 首先,Comparable接口是排序接口,意味着一个类如果实现了...

    Java中Comparable和Comparator 2种实现方式学习

    在Java编程语言中,排序是常见的操作,而`Comparable`和`Comparator`接口则是实现对象排序的两种主要方式。这篇文章将深入探讨这两种实现方式及其在实际编程中的应用。 首先,`Comparable`接口位于`java.lang`包下...

    List中保存对象,按对象中某一属性排序【含程序源码】

    这篇博客“List中保存对象,按对象中某一属性排序【含程序源码】”恰好提供了这样的解决方案。下面我们将深入探讨这个主题。 首先,让我们理解列表(List)和对象排序的基本概念。列表是Java集合框架的一部分,它允许...

    Comparable与Comparator的区别

    在Java编程语言中,Comparable和Comparator是两个非常重要的接口,它们都用于对象的比较和排序。下面是关于这两个接口的详细解释: **Comparable接口** Comparable接口位于`java.lang`包下,它是一个对象自比较的...

    java 按对象属性排序

    在Java集合框架中,`Collections.sort()`方法可以对List类型的集合进行排序。如果列表元素实现了`Comparable`接口,它会自动排序。如果列表元素是自定义对象,那么`compareTo()`方法将决定排序规则。 3. **...

    java 集合分组与排序

    Java集合框架中的`List`接口和数组(Array)是两种常用的数据结构,它们在处理数据时各有优势。下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这...

    java的Comparator和Comparable.docx

    当我们需要对一个集合或数组中的非数值类型对象进行排序,或者需要根据对象的多个属性进行复杂排序时,Comparator 就派上了用场。 Comparator 接口有一个核心方法 `compare(T o1, T o2)`,这个方法返回一个整数值,...

    Java Comparable和Comparator对比详解

    Java 中的 Comparable 和 Comparator 是两个常用的接口,用于实现对象的比较和排序。它们都是 Java 中的接口,都是用于比较对象的大小的,但它们有所不同。 Comparable 接口 Comparable 接口位于 java.lang....

    java中进行集合排序

    - **定义**:`Comparator&lt;T&gt;`接口是Java集合框架的一部分,用于比较两个对象的顺序。 - **实现**:为了实现基于特定属性的排序,通常需要创建一个实现了`Comparator`接口的类,并重写其中的`compare`方法。示例...

Global site tag (gtag.js) - Google Analytics