`
樱桃小包子
  • 浏览: 2930 次
  • 性别: Icon_minigender_2
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

如何使用Collections.sort对List排序

阅读更多
针对集合元素排序,在项目中还是比较常见,最近因为项目中有遇到,总结如下:

对List元素排序实现方法大家都知道用Collections.sort();首先给大家介绍一下Comparable与Comparator的接口的区别。

1.Comparable是对象内部需要实现的接口,如果一个对象要想用利用Array.sort进行排序,那么这个对象必须实现Comparable的接口,比较的实现规则是在对象的内部进行的,然后直接调用Collections.sort()即可。

2.Comparator接口是在对象外实现的接口,主要是方便了对没有实现Comparable接口的对象的比较和排序,比如:当我们对已经有的 一个类进行排序的时候,这个类又没有实现Comparable接口,那么我们可以利用Collections.sort(list,mew Comparator<?>(){})来排序,同时实现一个 Comparator接口实现对这个类的排序。

以下两个例子分别详细说明:实现对User类先按照名字字母先后顺序排序,名字相同情况下,再按照年龄大小排序

测试代码如下:

1、在对象内部实现具体的排序规则
User类:
public class User implements Comparable<Object>{
	//年龄
	private Integer age;
	//名字
	private String name;

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

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

    //排序方法内部实现
	@Override
	public int compareTo(Object o) {
		User user = (User)o;
		//step1、先按照名字字母顺序排序 
		if(this.getName() != null && user.getName() != null 
				&& 0 != this.getName().compareTo(user.getName())){
			return this.getName().compareTo(user.getName());
		}else{
			 //step2、 针对名字相同的再按照然后按照年龄大小排序
			if (this.getAge() != null && user.getAge() != null) {
				return this.getAge() - user.getAge();
			}
			return 0;
		}
	}

}

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

public class TestUserSort {
	
	public TestUserSort(){
		
	}
	
	//sort实现按照名字、年龄大小排序
	public static List<User> sortUser(){
		List<User> userList = new ArrayList<User>();
		String[] nameArry = {"ab","ccddd","ab","cd","faaa","ab"};
		Integer[] ageArry = {3,6,9,4,7,1};
		for(int i=0;i<6;i++){
			User user = new User();
			user.setName(nameArry[i]);
			user.setAge(ageArry[i]);
			userList.add(user);
		}
		return userList;
	} 

	public static void main(String[] args){
		List<User> userList = sortUser();
		Collections.sort(userList);
		
		for(User us : userList){
			System.out.println(us.getName()+"的年龄是:"+us.getAge());
		}
		
	}

}


2、在对象外部实现具体的排序规则(推荐使用)

User类:
public class User{
    //年龄
    private Integer age;
    //名字
    private String name;

    
    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

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


}

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

public class TestUserSort {
	
	public TestUserSort(){
		
	}
	
	//sort实现按照名字、年龄大小排序
	public static List<User> sortUser(){
		List<User> userList = new ArrayList<User>();
		String[] nameArry = {"ab","ccddd","ab","cd","faaa","ab"};
		Integer[] ageArry = {3,6,9,4,7,1};
		for(int i=0;i<6;i++){
			User user = new User();
			user.setName(nameArry[i]);
			user.setAge(ageArry[i]);
			userList.add(user);
		}
		return userList;
	} 

	public static void main(String[] args){
		List<User> userList = sortUser();
		Collections.sort(userList, new Comparator<User>(){
			public int compare(User o1,User o2){
				//step1、先按照名字字母顺序排序 
				if(o1.getName() != null && o2.getName() != null 
						&& 0 != o1.getName().compareTo(o2.getName())){
					return o1.getName().compareTo(o2.getName());
				}else{
					 //step2、 针对名字相同的再按照然后按照年龄大小排序
					if (o1.getAge() != null && o2.getAge() != null) {
						return o1.getAge() - o2.getAge();
					}
					return 0;
				}
			}
			
		});
		
		for(User us : userList){
			System.out.println(us.getName()+"的年龄是:"+us.getAge());
		}
		
	}

}


两种方法运行结果:
ab的年龄是:1
ab的年龄是:3
ab的年龄是:9
ccddd的年龄是:6
cd的年龄是:4
faaa的年龄是:7
分享到:
评论

相关推荐

    java List 排序 Collections.sort

    当我们需要对List中的元素进行排序时,`Collections.sort()`方法就派上了用场。这个方法能够根据元素的自然顺序或者自定义的比较器进行排序。本文将深入探讨`Collections.sort()`的使用、原理以及如何自定义排序规则...

    java中Collections.sort排序详解

    然后,使用Collections.sort()方法对列表进行排序,使用PriceComparator比较器来比较书籍的价格。 结论: 本文详细介绍了Java中的Collections.sort排序机制,包括Comparator接口的使用和实现机制。通过示例代码,...

    Java Collections.sort()实现List排序的默认方法和自定义方法

    Java Collections.sort()实现List排序的默认方法和自定义方法 Java Collections.sort()是Java语言中用于对List进行排序的方法,通过使用这个方法可以对List进行默认排序,也可以根据需要实现自定义的排序规则。 ...

    JAVA对list集合进行排序Collections.sort()

    本篇文章将详细探讨如何使用 `Collections.sort()` 对Java List集合进行排序。 首先,`Collections.sort(List&lt;T&gt; list)` 是一个通用的方法,它接受一个List类型的参数,并对其进行排序。排序的标准是基于集合中元素...

    Java Arrays.sort和Collections.sort排序实现原理解析

    Java中的`Arrays.sort()`和`Collections.sort()`是两个常用的排序函数,它们分别用于对数组和集合进行排序。这两个函数在内部实现上有所不同,但都基于高效的排序算法。 首先,`Collections.sort()`方法在处理列表...

    Java Collections.sort()排序代码案例

    在本文中,我们将使用 Java Collections.sort() 排序代码案例来对 Person 对象列表进行排序。 Person 对象有三个属性:名字、ID、年龄。我们将根据年龄从小到大排序,年龄相等时按照名字的字典顺序倒序排序。 代码...

    java 使用Collections类对List的排序操作

    本文将深入探讨如何使用 `Collections` 类对 List 进行排序操作。 首先,让我们了解 `List` 排序的基本概念。在 Java 中,`List` 是接口,它继承了 `Collection` 接口,并添加了顺序相关的操作。常见的 `List` 实现...

    用Java集合中的Collections.sort方法如何对list排序(两种方法)

    本文将深入探讨两种使用Collections.sort方法对List排序的方法。 首先,第一种方法是让List中的对象实现Comparable接口。Comparable接口定义了一个自然排序的规则,使得实现了该接口的类的对象可以进行比较并排序。...

    java中Collections.sort排序函数用法详解

    在Java编程语言中,`Collections.sort()` 是一个非常重要的函数,它用于对集合中的元素进行排序。这个函数是 `java.util.Collections` 类的一个静态方法,适用于列表(List)类型的集合。`Collections.sort()` 可以...

    详解Java中Collections.sort排序

    在Java编程语言中,`Collections.sort()`方法是一个非常重要的工具,它用于对集合中的元素进行排序。这个方法主要应用于`List`接口的实现类,如`ArrayList`和`LinkedList`等。`Collections.sort()`有两种主要的排序...

    详解java Collections.sort的两种用法

    在上面的代码中,我们首先创建了一个 Integer 类型的 List,然后使用 Collections.sort 方法对其进行排序。排序后的结果是默认的正序排序。 自定义类的排序 在实际应用中,我们经常需要对自定义类进行排序。...

    金陵科技学院软件院大二上Java高级1215Collections.docx

    在示例中,`Collections.sort(list)`按照默认的自然顺序对元素进行排序,使得`list`变为"123", "123", "aaa", "abc", "xyz"。 3. **`Collections.shuffle(List&lt;T&gt; list, Random rnd)`**:这个方法将列表中的元素...

    listview按序排列显示

    在这个场景下,我们使用`Collections.sort()`函数对一个包含Map对象的List进行排序,然后将排序后的数据适配到ListView中。以下是关于这个主题的详细解释。 **一、Map与List的关系** 在Java中,Map是一种键值对的...

    Collections

    * `Collections.sort(List&lt;T&gt; list)`: 对列表进行自然排序。 * `Collections.sort(List&lt;T&gt; list, Comparator&lt;? super T&gt; c)`: 对列表进行自定义排序。 线程安全操作 Collections 中的线程安全操作方法包括同步和不...

    JAVA中Collections工具类sort()排序方法

    在Java编程中,Collections工具类提供了许多方便的集合操作,其中`sort()`方法是一个非常重要的功能,用于对List类型的集合进行排序。本文将详细介绍`Collections.sort()`方法的两种使用方式及其示例。 ### 一、...

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

    然后,我们可以使用Collections.sort()方法来排序列表。 ```java List&lt;Record&gt; list = new ArrayList(); // 添加记录到列表中 Collections.sort(list); ``` 方法二:使用Comparator接口和Collator类 在Java中,...

    arrayList排序

    `Collections.sort()`是一个通用的方法,可以对List接口的实现类进行排序。在使用这个方法前,确保ArrayList中的元素类型实现了Comparable接口,这样默认按照自然顺序排序;或者提供一个Comparator来定义自定义的...

    java中list排序

    在这个例子中,我们使用了 SortList 类来对 UserInfo 对象的 userId 字段进行排序。我们可以使用泛型来指定排序的字段,然后使用反射机制来动态地取得方法。 这种方法可以实现对 List 中的对象进行排序,而不需要写...

    List对象排序通用方法

    首先,我们可以使用`Collections.sort()`方法对`List`进行排序。这个方法适用于已经实现了`Comparable`接口的元素类型,例如基本类型或自定义类。`Comparable`接口定义了一个`compareTo()`方法,用于比较类实例的...

    java日期排序.docx

    Collections.sort 方法可以对 List 对象中的元素进行排序,包括日期字符串。 示例代码 下面是一个使用 Java 进行日期排序的示例代码: import java.util.ArrayList; import java.util.Collections; import java....

Global site tag (gtag.js) - Google Analytics