Java集合排序

Java集合排序


主要内容

一、集合中的基本数据类型排序

  • 使用Collections类的sort()方法
  • sort(List list)根据元素的自然顺序对指数列表按升序进行排序

二、集合中的字符串排序

例题

  • 对整形进行排序
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class day28 {
    public static void main(String[] args) {
        // 泛型使用类的形式
        List<Integer> list = new ArrayList<Integer>();
        list.add(8);
        list.add(5);
        list.add(9);
        list.add(1);
        for (int i:list){
            System.out.print(i+" ");
        }
        System.out.println();
        System.out.println("***********************");
        // list排序
        Collections.sort(list);
        for (int i:list){
            System.out.print(i+" ");
        }
        System.out.println();
        System.out.println("***********************");
    }
}
  • 对字符串进行排序
 // 对存在list字符串进行排序
        List<String> list = new ArrayList<String>();
        list.add("orange");
        list.add("red");
        list.add("blue");
        list.add("yellow");
        System.out.println("Before sorting:");
        for (String s : list) {
            System.out.print(s + " ");
        }
        // 按照字母顺序排序
        Collections.sort(list);
        System.out.println("After sorting:");
        for (String s:list){
            System.out.print(s+" ");
        }

三、Comparator

  • 强行对某个对象进行整体排序的比较函数
  • 可以将Comparator传递给sort方法
  • int compare(n1,n2)比较用来排序的两个参数
  • equals(obj)该方法不需重写
  • 对宠物猫进行排序
  • Cat类
package day2;

public class Cat {
    private String name;
    private int month;
    private String species;

    //构造方法
    public Cat(String name, int month, String species) {
        this.name = name;
        this.month = month;
        this.species = species;
    }
    //getter与setter
    public String getName() {
        return name;
    }

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

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    public String getSpecies() {
        return species;
    }

    public void setSpecies(String species) {
        this.species = species;
    }

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

}

  • NameComparator类
package day2;

import java.util.Comparator;

public class NameCompatator implements Comparator<Cat> {
    @Override
    public int compare(Cat o1, Cat o2) {
        /**
         * 按照名字升序
         */
        String name1=o1.getName();
        String name2=o2.getName();
        // 对字符串进行比较,~ 倒序
        return name1.compareTo(name2);
    }
}

  • Main 按照名字升序
package day2;

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

public class day28 {
    public static void main(String[] args) {
        /**
         * 例题:对宠物猫分别按照名字升序,年龄降序排列
         */
        Cat huahua = new Cat("huahua",6,"波斯");
        Cat fanfan = new Cat("fanfan",2,"波斯");
        Cat maomao = new Cat("maomao",4,"波斯");
        List<Cat> catList=new ArrayList<Cat>();
        catList.add(huahua);
        catList.add(fanfan);
        catList.add(maomao);
        System.out.println("Before sorting:");
        for (Cat cat:catList){
            System.out.println(cat);
        }
        // 名字升序
        Collections.sort(catList,new NameCompatator());
        System.out.println("After sorting:");
        for (Cat cat:catList){
            System.out.println(cat);
        }
    }
}

  • AgeComparator类
package day2;

import java.util.Comparator;

public class AgeComparator implements Comparator<Cat> {
    @Override
    public int compare(Cat o1, Cat o2) {
        // 按照年龄降序
        int age=o1.getMonth();
        int age2=o2.getMonth();
        return age2-age;
    }
}

  • Main 年龄降序
// 按照年龄进行降序
        Collections.sort(catList,new AgeComparator());
        System.out.println("Age:After sorting:");
        for (Cat cat:catList){
            System.out.println(cat);
        }

四、Comparable

  • 自然排序
  • compareTO(o)自然比较
  • 例题:对商品价格进行降序排列
  • Goods类
package day2;

public class Goods implements Comparable<Goods>{
    private String id;
    private String name;
    private double price;

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

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public double getPrice() {
        return price;
    }

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

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

    /**
     * 商品价格降序
     * @param o
     * @return new Double(price2-price1).intValue()
     */
    @Override
    public int compareTo(Goods o) {
        // 取出商品价格
        double price1=this.getPrice();
        double price2=o.getPrice();

        return new Double(price2-price1).intValue();
    }
}

  • Main
Goods g1=new Goods("s01","手机",2000);
        Goods g2=new Goods("s02","冰箱",5000);
        Goods g3=new Goods("s03","电视剧",3000);
        List<Goods> goodsList=new ArrayList<Goods>();
        goodsList.add(g1);
        goodsList.add(g2);
        goodsList.add(g3);
        System.out.println("Before sorting:");
        for (Goods goods:goodsList){
            System.out.println(goods);
        }
        Collections.sort(goodsList);
        System.out.println("After sorting:");
        for (Goods goods:goodsList){
            System.out.println(goods);
        }
  • result
Before sorting:
Goods{id=s01, name='手机', price=2000.0}
Goods{id=s02, name='冰箱', price=5000.0}
Goods{id=s03, name='电视剧', price=3000.0}
After sorting:
Goods{id=s02, name='冰箱', price=5000.0}
Goods{id=s03, name='电视剧', price=3000.0}
Goods{id=s01, name='手机', price=2000.0}

五、Comparator与Comparable区别

Comparator与Comparable区别

六、总结

在这里插入图片描述
在这里插入图片描述

补充:数组的排序

int[] arrs
Array.sort(arrs);
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值