JAVA中的集合排序

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~
http://blog.csdn.net/xiaoduan_/article/details/79343240

JAVA集合排序

基本类型和字符串类型排序

基本类型和字符串类型排序直接调用
Collections.sort(list);根据元素的自然顺序对指定列表按升序进行排序
+ 对存储在List中的整型数据进行排序

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

public class IntSort {

    public static void main(String[] args) {
        // 对存储在List中的整型数据进行排序
        List<Integer> list=new ArrayList<Integer>();
        list.add(5);
        list.add(9);
        list.add(3);
        list.add(1);
        System.out.println("排序前:");
        for(int n:list){
            System.out.print(n+"    ");
        }
        System.out.println();
        //对List中的数据进行排序
        Collections.sort(list);
        System.out.println("排序后:");
        for(int n:list){
            System.out.print(n+"    ");
        }
    }
}
  • 对存放在List中的字符串进行排序
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class StringSort {

    public static void main(String[] args) {
        // 对存放在List中的字符串进行排序
        List<String> list=new ArrayList<String>();
        list.add("orange");
        list.add("blue");
        list.add("yellow");
        list.add("gray");
        System.out.println("排序前:");
        for(String s:list){
            System.out.print(s+"   ");
        }
        System.out.println();
        Collections.sort(list);
        System.out.println("排序后:");
        for(String s:list){
            System.out.print(s+"   ");
        }
    }
}
自定义类型排序

使用Comparable和Comparator接口

Comparator接口
  • 强行对某个对象进行自定义排序的函数
  • 可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort)
  • **int compare(T o1, T o2) 比较用来排序的两个参数。 如果o1
1. 单独定义比较类,实现Comparator接口
  • 按照名字比较
import java.util.Comparator;

public class NameComparator implements Comparator<Cat> {

    @Override
    public int compare(Cat o1, Cat o2) {
        // 按名字升序排序
        String name1=o1.getName();
        String name2=o2.getName();
        int n=name1.compareTo(name2);//比较方法
        return n;
    }

}

按年龄比较

import java.util.Comparator;

public class AgeComparator implements Comparator<Cat>{

    @Override
    public int compare(Cat o1, Cat o2) {
        // 按年龄降序排序
        int age1=o1.getMonth();
        int age2=o2.getMonth();
        return age2-age1;
    }

}
2. 在排序的时候传入比较的策略
        //按名字进行升序排序
        Collections.sort(catList, new NameComparator());
        System.out.println("按名字升序排序后:");
        for(Cat cat:catList){
            System.out.println(cat);
        }
        //按年龄进行降序排序
        Collections.sort(catList, new AgeComparator());
        System.out.println("按年龄降序排序后:");
        for(Cat cat:catList){
            System.out.println(cat);
        }
Comparable接口
  • 此接口强行对实现它的每个类的对象进行整体排序。
  • 这种排序被称为类的自然排序,类的 compareTo 方法被称为它
    的自然比较方法。
  • 对于集合,通过调用Collections.sort方法进行排序。
  • 对于数组,通过调用Arrays.sort方法进行排序
  • int compareTo(T o)方法 :该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数
    在构建类的时候,在要比较的类中重写 int compareTo()方法
@Override
    public int compareTo(Goods o) {
        // 取出商品价格
        double price1=this.getPrice();
        double price2=o.getPrice();
        int n=new Double(price2-price1).intValue();//降序排列
        return n;
    }
Comparator接口与Comparable接口的区别
ComparatorComparable
位于java.util包位于java.long包
在要比较的类的外部实现该接口,比较灵活,可以自定义多中比较策略,并且在排序的时候按需选择在要比较的类上实现该接口,只能定义一种排序策略
调用sort方法时,要指定Cmoparator的 实现类调用sort方法时,只需指定集合名即可
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值