Java集合类Sort排序的使用方法

//对整数集合进行排序

public void sortIntArray() {

int[] array = new int[] { 8, 5, 9, 0, 6, 3, 4, 7, 2, 1 };

System.out.println("整数排序前");

for (int i = 0; i < array.length; i++) {

System.out.print(array[i] + " ");

}

System.out.println();

Arrays.sort(array);

//对字符串集合进行排序

String[] array = new String[] { "a", "c", "e", "d", "b" };

System.out.println("字符串排序后");

Arrays.sort(array);

//对集合进行排序

java对集合排序的方法主要有两种,分别为实现Comparator接口和实现Comparable接口。其中,实现Comparable接口比较简单,用于单一标准的排序。如:

public class Animals implements Comparable<Animals>{

private String name;

public int age;

public Animals(String name, int age) {

this.name = name;

this.age = age;

}

public static void main(String[] args) {

LinkedList<Animals> list = new LinkedList<Animals>();

list.add(new Animals("a", 2));

list.add(new Animals("b", 4));

list.add(new Animals("c", 6));

Collections.sort(list);//需重写compareTo()方法

for (Animals animals : list) {

System.out.println("Animals name=" + animals.name + "age="

+ animals.age);

}

}

@Override

public int compareTo(Animals o) {

if (this.age > o.age)

return 1;

if (this.age < o.age)

return -1;

else

return 0;

}

}

但如果要实现多种要求的排序,就要实现Comparator接口了。因为Comparable接口只能用一种方式比较。实现Comparator接口,如:

Collections.sort(list, new AnimalsComparator());//sort方法的两个参数:比较的集合,比较器类的对象。

//比较器类,实现compare()方法

class AnimalsComparator implements Comparator<Animals> {

@Override

public int compare(Animals o1, Animals o2) {

if (o1.age > o2.age)

return 1;

if (o1.age < o2.age)

return -1;

else

return 0;

}

}

这样,通过构建不同的比较器类,并在sort()方法里面传入不同的比较器类对象,就能实现对象的不同属性比较。上面是按年龄,如果按体重也可以,如:

Collections.sort(list, new AnimalsWeightComparator());

class AnimalsWeightComparator implements Comparator<Animals> {

@Override

public int compare(Animals o1, Animals o2) {

if (o1.weight> o2.weight)

return 1;

if (o1.weight< o2.weight)

return -1;

else

return 0;

}

}

当然PO类要有对应的属性,并为属性传入参数。

用Collections.sort方法对list排序有两种方法

第一种是list中的对象实现Comparable接口,如下:

publicclass

User 
implementsComparable

     

     

     

     

     <user>

      

      

      

      

      {

    privateString
name;

    privateInteger
order;

    publicString
getName() {

        returnname;

    }

    publicvoid

setName(String name) {

        this.name
= name;

    }

    publicInteger
getOrder() {

        returnorder;

    }

    publicvoid

setOrder(Integer order) {

        this.order
= order;

    }

    publicint

compareTo(User arg0) {

        returnthis.getOrder().compareTo(arg0.getOrder());

    }

}

     

     

     

     

     </user>

 Collections.sort(list);

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-07 20:46:47

Java集合类Sort排序的使用方法的相关文章

【转载】Java集合类的排序,查找,替换操作

转自:http://blog.csdn.net/sunhuaqiang1/article/details/52142873 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对象后,我们可以根据Collection中的方法进行排序,查找,替换操作.而不用在东奔西走的利用什么各种排序算法.正则来实现了.在进行数组排序时,有时反而会因为参数问题而大费周折.例如,自己在利用快排进行数组排序时,当将参数(int []

Java List 实现排序的简单方法

private void sortDatas() { Collections.sort(mAllprogramdata, new Comparator<PairProgram>() { public int compare(PairProgram arg0, PairProgram arg1) { if (arg0.fav > arg1.fav) { return -1; //一定要返回-1 } else if (arg0.fav == arg1.fav) { return 0; } e

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

主要分析内容: 一.Collections工具类两种sort()方法 二.示例 一.Collections工具类两种sort()方法 格式一: public static <T extends Comparable<? super T>> void sort(List<T> list) 说明:该方法中的泛型<T>都是Comparable接口的子类,即只有是Comparable接口子类类型的数据,才能进行比较排序.如果其他类型的数据要进行比较排序,必须继承Co

JAVA基础【集合类与排序】

本章主题:在本章之中,对java集合  Collections.sort方法做一个简要的回顾. package test; /**  * @author Yshuai  * @version 创建时间:2014-08-20 上午09:49:36  */ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class 

JAVA中的数据结构——集合类(序):枚举器、拷贝、集合类的排序

枚举器与数据操作 1)枚举器为我们提供了访问集合的方法,而且解决了访问对象的“数据类型不确定”的难题.这是面向对象“多态”思想的应用.其实是通过抽象不同集合对象的共同代码,将相同的功能代码封装到了枚举器的这个接口里,就可以用一套代码来遍历不同类型的集合. 2)每个集合类(Vector或Hashtable等)都有一个iterator方法,各集合对象可以通过这个方法把遍历本类的控制权交给Iterator接口. 3)Iterator接口提供了boolean hasNext()方法判断是否到了集合的最后

Java中集合排序的两种方法

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * * <p> * ClassName CollectionsSort * </p> * <p> * Description 主要介绍两种集合的排序算法<br/> * 第一:java.util.Collections.sort(jav

java 的sort方法

java的sort方法一般两种,分Array.sort() 和Collection.sort() Arrays.sort(T[], Comparator < ? super T > c) 方法用于对象数组按用户自定义规则排序. Collections.sort(List<T>, Comparator < ? super T > c)方法用于对象集合按用户自定义规则排序. comparable是通用的接口,用户可以实现它来完成自己特定的比较.我们使用Arrays对数组进行

Java中Collections.sort()排序详解

第一种:Comparable 排序接口 若一个类实现了Comparable接口,就意味着"该类支持排序". 假设"有一个List列表(或数组),里面的元素是实现了Comparable接口的类",则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序. 此外,"实现Comparable接口的类的对象"可以用作"有序映射(如TreeMap)"中的键或"有序集合(Tree

数组Array.sort()排序的方法

数组sort排序 sort比较次数,sort用法,sort常用 描述 方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本.如果调用方法sort()时没有使用参数,将按字母顺序(更为精确地说,是按照字符编码的顺序)对数组中的元素进行排序.要实现这一点,首先应把数组的元素都转换成字符串(如果有必要的话),以便进行比较. 如果想按照别的顺序进行排序,就必须提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字.比较函数应该具有两个参数a和b,其返回值如下