`
落叶留步
  • 浏览: 53287 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

java中List集合排序

 
阅读更多

    在java里面,有时候我们可能需要对list集合中的对象的某个属性进行排序。这个问题就很简单了,Collections这个工具类提供了排序的方法,有两个重载方法,一个是只接受一个List集合,另一个是接受一个list和一个 Comparator接口。我这里以第二种为例讲解,后面在简单说明一下第一种,注意默认的顺序是升序排列

    在java api中可以看到 Comparator接口里面就一个方法,int compare(T o1,  T o2),传入两个对象,关于返回值,有三种情况-1, 0, 1。-1表示o1小于o2,0表示o1等于o2,1表示o1大于o2。如果我们想要的就是升序排列,那就比较o1的o2属性,保证o1小于o2属性返回-1,o1等于o2的属性返回0,o1大于o2的属性返回1就行了,结果出来的就是升序的结集合了。还有可能想降序,那还不简单,小于返回1,大于返回-1,等于还是返回0就解决了。我们只需要明白一点,那就是程序只能通过这个compare方法返回的值来确定顺序,-1时o1排在前面,1时o1排在后面,0就不用动,Collections这个排序方法永远都是根据返回值“升序排列”。说的直白一点就是:compare方法返回-1时,表示o1排在o2的前面,返回1是表示o1排在o2的后面,至于什么情况返回-1还是1就根据业务需求来确定。

 下面看个例子:

 

package com.pzn.sort;

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

public class SortListTest {
	
	public static void main(String[] args) {
		
		List<Per> list = new ArrayList<>();
		list.add(new Per("a", "2015-11-10"));
		list.add(new Per("b", "2015-10-10"));
		list.add(new Per("c", "2015-09-10"));
		list.add(new Per("d", "2015-11-02"));
		list.add(new Per("e", "2015-10-13"));
		// 升序
		Collections.sort(list, new Comparator<Per>() {
			public int compare(Per o1, Per o2) {
				return o1.bir.compareTo(o2.bir);
			}
		});
		
		System.out.println(list);
		// 降序
		Collections.sort(list, new Comparator<Per>() {
			public int compare(Per o1, Per o2) {
				return -o1.bir.compareTo(o2.bir);
			}
		});
		
		System.out.println(list);
		
	}
}

class Per {
	
        // 不要问我这里为什么不写private,然后提供setter/getter方法,而用public。
        // 是因为我写测试代码的时候偷懒,这段注释也是写博客的时候加的。
	public final String name;
	public final String bir;
	
	public Per(String name, String bir) {
		this.name = name;
		this.bir = bir;
	}

	@Override
	public String toString() {
		return "Per [name=" + name + ", bir=" + bir + "]";
	}
}

 

 

 

 最后说说第一个排序方法,只需要传入list集合的那个方法,这个方法要求要排序的list集合中的对象所属的类要实现一个Comparable接口,可能也注意到了,上面代码中String的比较就是使用的一个compareTo方法,这个方法就是来自Comparable接口,也就是说String实现了这个接口。

分享到:
评论

相关推荐

    java中进行集合排序

    ### Java中进行集合排序 在Java编程中,对集合(如`List`)中的对象进行排序是一项常见的操作。本文将详细介绍如何根据对象的特定属性来实现升序或降序排序。 #### 标题:Java中进行集合排序 该标题表明文章的...

    java 集合分组与排序

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

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

    Java 集合排序及java 集合类详解 Java 集合排序及java 集合类详解,Java...本教程详细解释了关于Java中的集合是如何实现的, 以及他们的实现原理等,涉及的部分内容:Collection , List ,Set , Map , 集合, 框架等。

    Java将2个List集合合并到一个List里面并排序工具类

    Java将2个List集合合并到一个List里面并排序工具类 1、Java编程资源,定义了一个名为`ListMerger`的工具类,主要包含一个名为`mergeAndSortLists`的静态方法。此方法用于将两个已经根据时间顺序排列的List合并成一...

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

    在Java编程中,排序是常见的数据处理操作,特别是在处理集合数据结构时,如List。本文将深入探讨如何在Java的List中对包含多个属性的对象进行排序,并且支持动态设置每个属性的排序方式。这个功能的实现是通过泛型和...

    list集合树状排序-java

    在Java编程中,"list集合树状排序"是一种常见的需求,特别是在处理前端展示的数据时,如使用jQuery的treetable插件。这个场景通常涉及到数据结构的组织和排序,以便前端能够按照树形结构正确地展示层级关系。下面将...

    Java8 用Lambda表达式给List集合排序的实现

    Java8 用Lambda表达式给List集合排序的实现 Java8 中引入了Lambda表达式和函数式编程,极大地简化了编程的难度和复杂度。本文主要介绍了Java8 中使用Lambda表达式给List集合排序的实现,通过示例代码详细地介绍了...

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

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

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

    在Java集合排序方面,我们主要关注List和Map。对于List,可以使用Collections.sort()方法进行排序,这个方法默认使用元素的自然顺序,如果元素是自定义对象,需要实现Comparable接口或者提供Comparator。对于Map,...

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

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

    java中集合排序

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

    Java集合排序及java集合类详解(Collection、List、Map、Set).doc

    Java集合排序及java集合类详解(Collection、List、Map、Set).doc

    java中文排序,数字字母汉字排序

    Java集合框架中的`List`接口提供了一个`sort(Comparator&lt;? super E&gt; comparator)`方法,可以接受一个比较器(Comparator)来定义自定义的排序规则。默认情况下,Java使用自然排序,即按照字符串的Unicode值进行排序...

    Java集合排序及java集合类详解(Collection、List、Map、Set)

    ### Java集合排序及java集合类详解 #### 集合框架概述 集合是Java编程语言中非常核心且广泛使用的部分,对于深入理解和高效使用Java语言至关重要。本文将围绕Java集合框架进行详细介绍,包括Collection、List、Set...

    Java List集合排序实现方法解析

    Java List 集合排序实现方法解析是 Java 编程语言中一个非常重要的知识点。List 集合是 Java 中的一种常用的数据结构,它可以存储多个元素,并提供了许多操作元素的方法,例如添加、删除、修改等。然而,在许多实际...

    java List 排序 Collections.sort

    在Java编程中,`List`接口是集合框架的重要组成部分,提供了有序的元素存储。当我们需要对List中的元素进行排序时,`Collections.sort()`方法就派上了用场。这个方法能够根据元素的自然顺序或者自定义的比较器进行...

    java 中文姓氏 排序

    本文将详细介绍如何在 Java 中对包含中文姓氏的对象列表或字符串列表进行排序。 #### 二、基本概念 1. **Collator 类**:这是 Java 中用于文本排序和检索的标准类。`Collator` 类提供了与语言环境相关的字符串排序...

    Java对List多个排序、查询条件的处理

    在Java编程中,对List进行多个排序和查询条件的处理是一项常见的任务,特别是在处理数据集合时。本篇文章将深入探讨如何使用Java实现这些操作,并基于给出的`GroupFilterSortUtils.java`文件,我们可以推断这是一个...

    java 中如何从LIST 对象取值

    在Java编程语言中,列表(List)是一种常用的数据结构,用于存储有序的元素集合。本文将深入探讨如何从List对象中获取数据,包括使用不同类型的List实现以及从List中提取特定值的方法。我们将通过示例代码来理解这些...

Global site tag (gtag.js) - Google Analytics