剑指45题的Java实现与Comparator

2020-11-30  本文已影响0人  Skittle丶

今天看了剑指的45题,其实也不难想,看了个很好的Java实现的代码:

public class SortArrayForMinNumber {
    public String PrintMinNumber(int [] numbers) {
        if(numbers==null || numbers.length<=0)
            return "";
        ArrayList<String> list = new ArrayList<String>();
        for(int number:numbers)
            list.add(String.valueOf(number));
        Collections.sort(list,new Comparator<String>(){
            @Override
            public int compare(String s1,String s2){
                String a=s1+s2;
                String b=s2+s1;
                return a.compareTo(b);
            }
        });
        StringBuilder sb= new StringBuilder();
        for(String str:list)
            sb.append(str);
        return sb.toString();
    }
}

其实最主要的就是重写的这个compare函数,之前看核心卷,认真读了一下comparable接口,但是都忘了。

@Override
            public int compare(String s1,String s2){
                String a=s1+s2;
                String b=s2+s1;
                return a.compareTo(b);
            }

看了一下jdk8的手册才明白,


image.png

其实这个问题是把接口作为参数传入到这个sort函数中了,然后在里面进行了覆写。

上一篇下一篇

猜你喜欢

热点阅读