`

转 多字段排序

 
阅读更多

多字段排序的问题其实很简单,只要实现一个自己的Comparator就可以。  例如我有一个类

class Student {
  public String name;
  public int id;
  public char gender;
  public Student(String name, int id, char gender){
     this.name = name;
     this.id = id;
     this.gender = gender;
  }
}

然后我有一个ArrayList, 添加了三个学生进去

public static void main(String[] args){
  List list = new ArrayList();
  list.add(new Student("Tom", "3423", 'M'));
  list.add(new Student("Tom", "1291", 'M'));
  list.add(new Student("Marry", "3421"),'F'));

  //然后我想给list里面的学生排序,很简单,只一行代码就可以
  Collections.sort(list, new MyComparator());
}

/* 我的排序规则是,先按名字牌,如果名字一样的,按照id来排,只要把这个逻辑实现在MyComprator里就可以*/

class MyComparator implements Comparator {
  public int compare(Object o1, Object o2){
     Student s1 = (Student)o1;
     Student s2 = (Student)o2;
     if (s1.name.compateTo(s2.name) != 0) //如果名字不一样
        return s1.name.compareTo(s2.name);
     else // 如果名字一样
        return s1.id - s2.id;
  }

  // 这个method在这里没有用,所以没有具体实现
  public boolean equals (Object o){return false;}
}

这样,Collections.sort()就会根据你自己定义的规则来排序了。它会调用compare函数来决定拿个大,拿个小。 如果返回负数,说明前者小,反之亦然。  这里,当一开始比较名字的时候,我使用了String的compareTo , 这样就不用自己再写String比较的算法了

分享到:
评论

相关推荐

    C# List OrderBy 动态多字段排序

    本篇文章将深入探讨如何在C#中使用`OrderBy`方法进行动态多字段排序。 首先,了解`OrderBy`的基本用法。`OrderBy`方法接收一个委托作为参数,这个委托定义了排序的规则。在单字段排序中,我们通常使用Lambda表达式...

    C# IList多字段排序

    本篇将详细讲解如何在C#中使用`IList<T>`实现多字段排序。 首先,我们需要了解C#中的排序基础。在C#标准库中,`System.Linq`命名空间提供了强大的排序功能,包括`OrderBy()`和`ThenBy()`方法。这两个方法可以用于...

    List<map>多字段组合排序

    List,List, Object>>,多字段组合排序。提供一个简易的思路,如果需要进行参考。

    OrderByInterceptor,配合PageHelper实现字段排序插件

    OrderByInterceptor,配合PageHelper实现字段排序插件,前端传入要排序的字段和排序规则,插件自动将实体字段映射成数据库字段,不用设置表明前缀。插件通过ResultMap或ResultType读取映射关系,若没有设置,则根据...

    v-for根据某字段排序

    v-for根据某字段进行排序显示,方法比较灵活,可嵌入任何系统,不用依赖包,懂点vue基础的人都会用

    java 大文件 多字段排序

    在Java编程中,处理大文件并进行多字段排序是一项挑战性的任务,特别是在内存有限的情况下。以下将详细讲解如何实现这个目标。 首先,我们要理解大文件排序的基本原理。当文件太大无法一次性加载到内存时,我们需要...

    多段字典去重_多字段排序(H600x55x22).xlsm

    多段字典去重_多字段排序(H600x55x22)

    jquery 分布 字段排序

    在处理表格数据时,字段排序是常见的需求,尤其是在动态加载或通过Ajax获取数据的情况下。jQuery与Ajax的结合可以实现这种分布式的、基于用户交互的排序功能。 在标题"jquery 分布 字段排序"中,"分布"可能指的是...

    sql多条件多字段排序(图文教程)

    下面我们将详细讨论如何使用SQL进行多条件多字段排序。 首先,基本的多字段排序语法如下: ```sql SELECT * FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2, ...; ``` 这里的排序方式可以是`ASC`或`DESC`...

    易语言excel多列排序

    在"易语言excel多列排序"这个主题中,我们主要探讨的是如何利用易语言编写程序,实现对Excel电子表格中的数据进行多列排序的功能。在Excel中,排序功能是数据分析和整理数据的关键操作,而多列排序则意味着可以根据...

    Hibernate中对表某个字段排序

    Hibernate中对表某个字段排序,直接在配置里面实现排序功能。

    js实现点击table表头字段,根据字段排序例子

    在JavaScript中实现点击表格(Table)表头进行字段排序是一种常见的功能需求,特别是在网页数据展示时,用户往往希望可以通过点击列头对数据进行升序或降序排列。本示例将详细讲解如何通过JavaScript实现这一功能。 ...

    JSON 数字排序多字段排序介绍

    对于多字段排序,我们可以调用`SortBy`函数多次,或者创建一个更复杂的比较函数来处理多个条件。以下是一个多字段排序的例子: ```javascript // 假设我们有两个字段'orderNum'和'name' nodes.sort(function (a, b)...

    Server2005高效分页存储过程(支持多字段排序)

    Server2005/2008专用高效分页存储过程(支持多字段排序).

    SQL-ORDER BY 多字段排序(升序、降序)

    `ORDER BY`子句用于指定查询结果的排列顺序,而多字段排序则允许我们根据多个列的值来对结果进行排序。以下是对`ORDER BY`多字段排序的详细说明。 ### 1. `ORDER BY`基本语法 `ORDER BY`子句的基本语法如下: ```...

    根据JSONArray中给定字段排列顺序

    给出提前排序的数组,jsonArray中字段根据数组顺序重新排序。

    JS根据json数组多个字段排序及json数组常用操作

    这里我们将深入探讨如何根据JSON数组中的多个字段进行排序,以及JSON数组的一些常用操作。 首先,我们来看如何根据JSON数组的多个字段进行排序。在提供的代码中,有一个名为`sortByArr`的函数,它可以接收两个参数...

    通用分页存储过程(多表,多排序字段)

    性能还算可以吧,支持多表查询,多字段排序,但是必须主键唯一,要是哪位兄弟有支持主键重复的,请告之。 思路说明:  按条件排序方式查询表获得总数,计算你想要的页码开始位置和结束位置,取得你要的信息返回。...

Global site tag (gtag.js) - Google Analytics