Arrays.Sort()方法直接输出数组和java8排序

 其实Arrays.Sort(str) 是不稳定的,稳定排序可以用Arrays.parallelSort(str)
       若是升序直接Arrays.Sort(str)  就可以,若不是则得改造一下
        Integer[]str={1,3,4,5,7,2};
        Arrays.sort(str,new Comparator() {
            @Override
            public int compare(Integer o1, Integer o2) {
                //反序有 -   若是正序则去掉 -
                return -o1.compareTo(o2);
            }
        });
        System.out.println(Arrays.toString(str));

java8 数组排序:

目前我只会先变为list 在转数组不会一次性转数组(还得继续学习)
    反序:
        Integer[]str={1,3,4,5,7,2};
        List collect = Arrays.stream(str).sorted(Comparator.reverseOrder()).collect(Collectors.toList());
        Integer[] integers = collect.toArray(new Integer[6]);
        String s = Arrays.toString(integers);
        System.out.println(s);
        输出:[7, 5, 4, 3, 2, 1]  
    正序:
   Comparator.reverseOrder()   改为 Comparator.naturalOrder()    就行

如果是一个对象的一个属性排序则:

            List collect = listResult.stream()
            .sorted(Comparator.comparing(FollowIMSI::getFollowDegree).reversed())
            .collect(Collectors.toList());

如果两个对象的一个属性排序:

List humans = new ArrayList<>();
humans.add(new Human("Sarah", 10));
humans.add(new Human("Jack", 12));
正序是:
Collections.sort(humans, Comparator.comparing(Human::getName));
反序是:
Collections.sort(humans, Comparator.comparing(Human::getName).reversed());

多条件排序:

//先按年龄从小到大排序,年龄相同再按id从小到大排序
personList.stream().sorted(Comparator.comparing((Person::getAge).thenComparing(Person::getId())).collect(Collectors.toList()) 

你可能感兴趣的:(java)