`

Java集合对象排序

阅读更多
转自:http://blog.163.com/love-love-l/blog/static/21078304200982391143675/(感谢原作者!)

Java API针对集合类型排序提供了两种支持:
java.util.Collections.sort(java.util.List)
java.util.Collections.sort(java.util.List, java.util.Comparator)

第一个方法要求所排序的元素类必须实现java.lang.Comparable接口。
第二个方法要求实现一个java.util.Comparator接口。

java.lang.Comparable接口和java.util.Comparator接口是Java对排序最提供最基本支持。这两个接口不但可以用于集合元素排序,还可以用于数组排序。

如果数组或集合元素是String类型,则可以利用Java API实现的Comparator<String>对象String.CASE_INSENSITIVE_ORDER为容器元素排序。

下面给出两个里测试,涵盖集合和数组的排序,并且还演示了数组和集合的相互转换,附件里面是完整的排序演示代码。
方法一:实现Comparable接口排序package collsort.comparable; 

package com.cvicse.sort.comparable;



public class Cat implements Comparable<Cat> {

    private int age;

    private String name;



    public Cat(int age, String name) {

       this.age = age;

       this.name = name;

    }



    public int getAge() {

       return age;

    }



    public void setAge(int age) {

       this.age = age;

    }

    ......

    public int compareTo(Cat o) {

       return this.getAge() - o.getAge();

    }

    ......

}

       通过实现Comparable接口实现个性化排序测试。排序测试,Collection.sort(list)升序排列Collections.sort(list, Collections.reverseOrder());降序排列;Collections.reverse(list);反转排序,先输出列表最后一个元素

public class TestComparable {

public static void main(String args[]) {

  test();

  test2();

}

public static void test() {

  ......

  List<Cat> listCat1 = new ArrayList<Cat>();

  Cat cat1 = new Cat(34, "hehe");

  Cat cat2 = new Cat(12, "haha");

  Cat cat3 = new Cat(23, "leizhimin");

  Cat cat4 = new Cat(13, "lavasoft");

  listCat1.add(cat1);

  listCat1.add(cat2);

  listCat1.add(cat3);

  ......

  System.out.println("调用Collections.sort(List<T> list)listCat2升序排序:");

  Collections.sort(listCat1);

  System.out.println("降序排列元素:");

  Collections.sort(listCat1, Collections.reverseOrder());

  System.out.println("Collections.reverse 从列表中最后一个元素开始输出:");

  Collections.reverse(listCat1);

  ......

}



public static void test2() {

  String[] strArray = new String[] { "z", "a", "C" };

  System.out.println("数组转换为列表");

  List<String> list = Arrays.asList(strArray);

  System.out.println("顺序排序列表");

  Collections.sort(list);

  System.out

    .println("按String实现的Comparator对象String.CASE_INSENSITIVE_ORDER排序----");

  Collections.sort(list, String.CASE_INSENSITIVE_ORDER);

  System.out.println("倒序排序列表");

  Collections.sort(list, Collections.reverseOrder());

  ......

}

}

方法二:实现Comparator接口排序

public class Person {

private int age;

private String name;

  ......

public int getAge() {

  return age;

}

public void setAge(int age) {

  this.age = age;

}

        ......

}

   实现了Comparator接口,重写了compare方法

import java.util.Comparator;

public class PersonComparator implements Comparator<Person> {



public int compare(Person o1, Person o2) {

  return o1.getAge() - o2.getAge();

}

}

引自:http://gaojiewyh.javaeye.com/blog/405514

分享到:
评论

相关推荐

    Java:集合排序(正序、倒序)的方法

    java 对象集合按字段排序

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

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

    Java对集合中的对象排序

    对集合中的对象进行排序,例如:List中存放了User对象,则可根据User对象的某一个属性进行顺序or倒序的排序

    java中Map集合的排序方法

    1,HashMap底层维护一个数组,我们向HashMap中所放置的对象实际上是存储在该数组当中; 2,当向HashMap中put一对键值时,它会根据key的hashCode值计算出一个位置,该位置就是此对象准备往数组中存放的位置。 ...

    JAVA泛型简单排序实例

    JAVA泛型源代码实现以下功能:返回数组元素的最大值/最小值下标;判断数组元素是否按升序排列;T对象数组排序;二分法查找key元素;

    java中进行集合排序

    java中按找对象的某个属性进行升序降序的排序

    JAVA SE 开发手册.CHM

    14、JAVA集合框架之list接口、LinkedList类、ArrayList类、Vector类 15、JAVA集合框架之Set接口、HashSet类、TreeSet类 16、JAVA集合框架之Map接口、HashMap类、Trelap类、Hashtable类 17、JAVA异常Exception 18...

    JAVA像SQL一样对List对象集合进行排序

    主要介绍了JAVA像SQL一样对List对象集合进行排序的实现方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

    java版本List中对象多属性排序.rar

    java版本List中对象多属性排序.rar

    Java实现储存对象并按对象某属性排序的几种方法示例

    主要介绍了Java实现储存对象并按对象某属性排序的几种方法,结合实例形式详细分析了Java储存对象并按对象某属性排序的具体实现方法与操作注意事项,需要的朋友可以参考下

    java排序代码

    定制排序:在创建TreeSet集合对象时,并提供一个Comparator接口实现类对象与该TreeSet集合关联, 由Comparator实现类对象负责集合元素的排序逻辑。 // 自定义比较器 class MyTreeSetCompartor implements...

    集合的多级排序

    /*集合的多级排序,列入几个学生对象进行考试,先按总成绩的大小排序, 如果总成绩相同的情况下,按照平时成绩进行排序*/

    java根据List内对象的属性排序方法

    下面小编就为大家分享一篇java根据List内对象的属性排序方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    java集合框架

    集合框架是一个用来代表和操纵集合的统一架构。...算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

    JAVA集合的使用(List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类、equals、hashCode)

    要注意的是List,Set,Queue继承了Collection接口,Map和Collection无关,但他们都是接口,不能直接实例化对象。这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable...

    Java集合总结.txt

    集合:大小可变的序列,只能存放对象 集合和数组的区别: 1.集合是大小可变的序列,数组在声明后,长度不可变 2.数组只能存放声明时指定的一种数据类型,集合可变存放多种数据类型 3.数组可以存放基本数据类型,...

    Java集合容器面试题(2023最新版)-重点

    Java集合容器面试题(2023最新版)-重点 **集合框架:**用于存储数据的容器。 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。 任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合...

    Java集合框架的一个扑克牌小程序

    * 方法: public PockerCard() //无参构造函数: 创建牌的集合、创建两个角色对象 * public void initializeCard() //创建整幅扑克牌 * public void showCard() //显示单支牌的花色和点数 * public void ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第13章 Java集合类  13.1 Set(集)  13.1.1 Set的一般用法  13.1.2 HashSet类  13.1.3 TreeSet类  13.1.4 向Set中加入持久化类的对象  13.2 List(列表)  13.3 Map(映射)  13.4 小结  13.5 思考题 第14...

    java 中List按照date排序的实现

    主要介绍了java 中List按照date排序的实现的相关资料,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics