`
清春不二
  • 浏览: 16420 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java对集合进行排序的两种方法

    博客分类:
  • java
 
阅读更多
有两种方式可以进行集合排序 :
1. 为集合中对象的所属类实现了 java.lang.Comparable 接口

对需要排序的person类实现Comparable接口,实现接口的CompareTo方法来定义排序的规则
public class Person implements Comparable{
    private final int id;
    private String name;
    private int age;
   
    public Person(int id,String name,int age){
           this.id = id;
           this.name = name;
           this.age = age;
    }
    public int getId(){
           return id;
    }
    public void setName(String name){
           this.name = name;
    }
    public String getName(){
           return name;  
    }
    public void setAge(int age){
           this.age = age;
    }
    public int getAge(){
           return age;     
    }
    @Override
    public String toString(){
           return "Id: " + id + "/tName: " + name + "/tAge: " + age;
    }   
    @Override
    public int compareTo(Object o){      // 实现 Comparable 接口的抽象方法,定义排序规则
           Person p = (Person)o;
           return this.id - p.id;                      // 升序排列,反之降序
    }
    @Override
    public boolean equals(Object o){     //equals
           boolean flag = false;
           if(o instanceof Person){
                  if(this.id == ((Person)o).id)
                         flag = true;
           }
           return false;          
    }    
 
  
}

测试类
import java.util.TreeSet;
import java.util.Iterator;
 
public class TestComparable{
       public static void main(String[] args) {
              TreeSet ts = new TreeSet();
              ts.add(new Person(1003," 张三 ",15));
              ts.add(new Person(1008," 李四 ",25));
              ts.add(new Person(1015," 王五 ",73));
              ts.add(new Person(1001," 赵六 ",49));
 
              Iterator it = ts.iterator();
              while(it.hasNext()){
                     Person employee = (Person)it.next();
                     System.out.println(employee);     
              }
       }
}


2. 为集合指定比较器 java.lang.Comparator 的实现类
需要排序的类
//需要排序的类的对象
public class Person{
    private final int id;
    private String name;
    private int age;
   
    public Person(int id,String name,int age){
           this.id = id;
           this.name = name;
           this.age = age;
    }
    public int getId(){
           return id;
    }
    public void setName(String name){
           this.name = name;
    }
    public String getName(){
           return name; 
    }
    public void setAge(int age){
           this.age = age;
    }
    public int getAge(){
           return age; 
    }
    @Override
    public String toString(){
           return "Id: " + id + "/tName: " + name + "/tAge: " + age;
    } 
}
//创建person类的比较器
package ClassTest;

import java.util.Comparator;
public class PersonComparetor implements Comparator<Person>{

    public int compare(Person o1, Person o2) {
       
// return o1.getId()-o2.getId(); //升序
        return o2.getId()-o1.getId(); //降序
    }
}
//测试类
public class TestComparable {
    public static void main(String[] args) {
        List<Person> ts=new ArrayList<Person>();
        ts.add(new Person(1003," 张三 ",15));
        ts.add(new Person(1008," 李四 ",25));
        ts.add(new Person(1015," 王五 ",73));
        ts.add(new Person(1001," 赵六 ",49));
        PersonComparetor pc=new PersonComparetor();
        Collections.sort(ts, pc);
        for(Person p:ts){
            System.out.println(p);
        }
 }
}
分享到:
评论

相关推荐

    java 集合分组与排序

    Java集合框架提供两种主要的排序方式:`Collections.sort()`方法和流API的`sorted()`方法。 - `Collections.sort()`:适用于`List`接口的实现类,如`ArrayList`和`LinkedList`。它直接在原地对列表进行排序,无需...

    Java集合排序及java集合类详解.pdf

    ### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。Java集合框架提供了多种数据结构,包括列表(List)、集(Set)和映射(Map),这些数据结构...

    JAVA排序算法集合

    快速排序是一种高效的排序算法,采用了分治法的策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。快速排序的关键在于选择合适的基准值。 **时间复杂度**: - 最好情况:O(n log n),当每次...

    java中集合排序

    本文将深入探讨Java中集合排序的相关知识点,包括基本概念、排序方法以及常用类的实现。 1. **集合接口与实现** Java集合框架主要包括`List`, `Set`, 和 `Map`三大接口。其中,`List`接口要求元素有序,允许重复;...

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

    对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用Comparable接口 在Java中,我们可以使用Comparable接口来实现自定义排序。例如,我们可以创建一个Record类,...

    java泛型集合 java集合 集合 java Collection

    至于集合排序,Java提供了两种主要的排序方式。一种是使用`Collections.sort()`方法,它适用于`List`接口的实现,如`ArrayList`。例如: ```java List&lt;Integer&gt; numbers = new ArrayList(); // 添加元素... ...

    Java集合排序及java集合类详解

    Java集合框架中的排序通常涉及到两种情况: 1. 对于实现了`Comparable`接口的元素,如Integer、String等,可以直接使用`Collections.sort()`方法对List进行排序。 2. 对于不满足自然排序的元素,可以通过自定义`...

    java冒泡排序java冒泡排序集锦方法!

    `Collections.sort()` 是 Java 中一种快速且高效地对集合(如 ArrayList)进行排序的方法。可以自定义比较器来指定排序规则。 **示例代码分析**: ```java public class Main { public static void main(String[] ...

    java集合排序方法总结共13页.pdf.zip

    Java集合排序涉及的知识点广泛,包括基本的`Collections.sort()`、自定义Comparator、Stream API、并行排序以及泛型等。理解这些概念并熟练运用,能显著提高代码质量和效率。在实际编程中,根据具体需求选择合适的...

    常用排序算法的java实现(冒泡、插入、选择、希尔、归并、快排)

    2. **插入排序**:插入排序的工作原理是将数组分为已排序和未排序两部分,然后逐个将未排序的元素插入到已排序部分的正确位置。在Java中,可以使用一个外层循环来遍历未排序部分,再用一个内层循环找到插入位置,并...

    用Java实现几种常见的排序算法

    它选取一个基准元素,将数组分为两部分,一部分所有元素都比基准小,另一部分所有元素都比基准大,然后递归地对这两部分进行快速排序。 ```java package org.rut.util.algorithm.support; import org.rut.util....

    java集合思维导图

    Java集合框架还包含了一些工具类,如`Collections`(提供对集合的静态方法)、`Iterator`(遍历集合元素)、`Comparator`(用于比较对象)等。这些工具极大地提高了代码的可读性和效率。 在实际应用中,选择合适的...

    Java sort集合排序的两种方式解析

    本文将详细解析Java中使用`sort`方法对集合排序的两种主要方式:基于`Comparable`接口和`Comparator`接口。 首先,我们来看第一种方式,通过实现`Comparable`接口来排序。`Comparable`接口定义了一个`compareTo`...

    Java集合排序及java集合类详解参照.pdf

    Java集合框架中的排序通常涉及到两种方式:自然排序和定制排序。对于实现了Comparable接口的元素,如String和Integer,集合会自动进行自然排序。若需自定义排序规则,可以提供Comparator实例。 1. 对于List,可以...

Global site tag (gtag.js) - Google Analytics