有两种方式可以进行集合排序 :
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集合框架提供两种主要的排序方式:`Collections.sort()`方法和流API的`sorted()`方法。 - `Collections.sort()`:适用于`List`接口的实现类,如`ArrayList`和`LinkedList`。它直接在原地对列表进行排序,无需...
### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。Java集合框架提供了多种数据结构,包括列表(List)、集(Set)和映射(Map),这些数据结构...
快速排序是一种高效的排序算法,采用了分治法的策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。快速排序的关键在于选择合适的基准值。 **时间复杂度**: - 最好情况:O(n log n),当每次...
本文将深入探讨Java中集合排序的相关知识点,包括基本概念、排序方法以及常用类的实现。 1. **集合接口与实现** Java集合框架主要包括`List`, `Set`, 和 `Map`三大接口。其中,`List`接口要求元素有序,允许重复;...
对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用Comparable接口 在Java中,我们可以使用Comparable接口来实现自定义排序。例如,我们可以创建一个Record类,...
至于集合排序,Java提供了两种主要的排序方式。一种是使用`Collections.sort()`方法,它适用于`List`接口的实现,如`ArrayList`。例如: ```java List<Integer> numbers = new ArrayList(); // 添加元素... ...
Java集合框架中的排序通常涉及到两种情况: 1. 对于实现了`Comparable`接口的元素,如Integer、String等,可以直接使用`Collections.sort()`方法对List进行排序。 2. 对于不满足自然排序的元素,可以通过自定义`...
`Collections.sort()` 是 Java 中一种快速且高效地对集合(如 ArrayList)进行排序的方法。可以自定义比较器来指定排序规则。 **示例代码分析**: ```java public class Main { public static void main(String[] ...
Java集合排序涉及的知识点广泛,包括基本的`Collections.sort()`、自定义Comparator、Stream API、并行排序以及泛型等。理解这些概念并熟练运用,能显著提高代码质量和效率。在实际编程中,根据具体需求选择合适的...
2. **插入排序**:插入排序的工作原理是将数组分为已排序和未排序两部分,然后逐个将未排序的元素插入到已排序部分的正确位置。在Java中,可以使用一个外层循环来遍历未排序部分,再用一个内层循环找到插入位置,并...
它选取一个基准元素,将数组分为两部分,一部分所有元素都比基准小,另一部分所有元素都比基准大,然后递归地对这两部分进行快速排序。 ```java package org.rut.util.algorithm.support; import org.rut.util....
Java集合框架还包含了一些工具类,如`Collections`(提供对集合的静态方法)、`Iterator`(遍历集合元素)、`Comparator`(用于比较对象)等。这些工具极大地提高了代码的可读性和效率。 在实际应用中,选择合适的...
本文将详细解析Java中使用`sort`方法对集合排序的两种主要方式:基于`Comparable`接口和`Comparator`接口。 首先,我们来看第一种方式,通过实现`Comparable`接口来排序。`Comparable`接口定义了一个`compareTo`...
Java集合框架中的排序通常涉及到两种方式:自然排序和定制排序。对于实现了Comparable接口的元素,如String和Integer,集合会自动进行自然排序。若需自定义排序规则,可以提供Comparator实例。 1. 对于List,可以...