如何使用lambda实现集合排序

如何实现排序

向某些可以排序的类传入一个Comparator的接口,这个接口中的compare可以实现排序功能,默认从小到大排序

如果是(o1, o2) -> o1 - o2,从小到大排序
如果是(o1, o2) -> o2 - o1,从大到小排序

匿名内部类

一个方法中传入接口时,可以new一个接口并且重写接口里的方法

public class MainTest {

    @Test
    public void whatTest(){
        MainTest.catSay(new what() {
            @Override
            public void cat() {
                System.out.println("cat say what das fox say!");
            }
        });
    }

    public static void catSay(what w){
        w.cat();
    }
}

interface what{
    void cat();
}

使用lambda表达式可以让其实现的更加简单括号里面是参数,右边是重写的方法,如果只有一条语句或者只有返回值,不用写大括号

MainTest.catSay(() -> System.out.println("cat say lambda"));

自然排序

在构造储存对象类的时候实现Comparable接口,并重写compareTo方法,在集合中使用add方法向集合中添加元素的时候,集合会自动排序

选择排序

在定义集合对象时传入自定义比较器Compartor,需要实现比较器中的compare方法,在集合中使用add方法进行排序

使用sort方法排序

在Arrays中的sort方法可以排序任何数组
在Collations中的sort方法可以排序大多数集合(不能排序HashMap)

        ArrayList<Integer> l = new ArrayList<>();
        l.add(5);
        l.add(3);
        l.add(13);
        l.add(9);
        l.add(1);
        Collections.sort(l, (o1, o2) -> o1 - o2);

其中集合是可以传入数组的,所以也可以实现按数组的一号元素、二号元素等大小进行排序

你可能感兴趣的:(java基础,排序算法,java,算法)