Java集合排序

1.集合中的基本数据类型排序

package com.imooc.sort;

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

public class Demo1 {
    public static void main(String[] args) {
        //对整型进行排序
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(8);
        list.add(3);
        list.add(7);
        list.add(9);
        Collections.sort(list);
        System.out.println(list);
    }
}

2.集合中的字符串排序

package com.imooc.sort;

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

public class Demo1 {
    public static void main(String[] args) {
        //对字符串进行排序
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("orange");
        list1.add("blue");
        list1.add("yellow");
        list1.add("pink");
        Collections.sort(list1);
        System.out.println(list1);
    }
}

3.Comparator接口
强行对某个对象进行整体排序的比较函数
可以将Comparator传递给sort方法(如Collections.sort或Arrays.sort)
int compare(T o1,T o2)用来比较排序 的两个参数
如果o1<o2,返回负整数
如果o1=o2,返回0
如果o1>o2,返回正整数

Cat类

package com.imooc.sort;

public class Cat {
    private String name;
    private int age;

    public int getAge() {
        return age;
    }

    public Cat(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

实现名字升序的类

package com.imooc.sort;

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();
        //按猫的名字进行升序排序
        return name1.compareTo(name2);
        /*
        如果按猫的名字进行降序排序
          return name2.compareTo(name1);
         */


    }
}

实现年龄降序排序的类

package com.imooc.sort;

import java.util.Comparator;

public class AgeComparator implements Comparator<Cat> {
    @Override
    public int compare(Cat o1, Cat o2) {
        Integer age1 = o1.getAge();
        Integer age2 = o2.getAge();
        //按年纪进行降序排列
        return age2.compareTo(age1);

    }
}

package com.imooc.sort;

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

public class Demo2 {
    public static void main(String[] args) {
        Cat hauhua = new Cat("hauhua",5);
        Cat fanfan = new Cat("fanfan",2);
        Cat maomao = new Cat("maomao",3);
        ArrayList<Cat> catList = new ArrayList<Cat>();

        catList.add(hauhua);
        catList.add(fanfan);
        catList.add(maomao);

        //按名字进行升序排序
        Collections.sort(catList,new NameComparator());
        System.out.println(catList);

        System.out.println("-----------------");
        //按年年龄进行降序排序
        Collections.sort(catList,new AgeComparator());
        System.out.println(catList);
    }
}

在这里插入图片描述

4.Comparable接口
此接口强行对实现它的每个类的对象进行整体排序
这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法
对于集合,调用Collections.sort方法进行排序
对于数组,调用Arrays.sort方法进行排序

package com.imooc.sort;

public class Goods implements Comparable<Goods>{

    private String name;
    private double price;

    @Override
    public int compareTo(Goods o) {

        double price1 = this.price;
        double price2 = o.price;
        int n = (int) (price2-price1);//降序排序
        // int n = (int) (price1-price2);//升序排序
        return n;
    }

    public Goods(String name, double price) {
        this.name = name;
        this.price = price;
    }

    @Override
    public String toString() {
        return "Goods{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

}

package com.imooc.sort;

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

public class Demo3 {
    public static void main(String[] args) {
        Goods goods1 = new Goods("手机",5000);
        Goods goods2 = new Goods("冰箱",6000);
        Goods goods3 = new Goods("彩电",4000);

        ArrayList<Goods> goodsList = new ArrayList<Goods>();
        goodsList.add(goods1);
        goodsList.add(goods2);
        goodsList.add(goods3);

        Collections.sort(goodsList);
        System.out.println(goodsList);
    }

}

商品价格间降序排序
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值