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

    xiaoxiao2022-07-04  161

    其实Arrays.Sort(str) 是不稳定的,稳定排序可以用Arrays.parallelSort(str) 若是升序直接Arrays.Sort(str) 就可以,若不是则得改造一下 Integer[]str={1,3,4,5,7,2}; Arrays.sort(str,new Comparator<Integer>() { @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<Integer> 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<FollowIMSI> collect = listResult.stream() .sorted(Comparator.comparing(FollowIMSI::getFollowDegree).reversed()) .collect(Collectors.toList());

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

    List<Human> 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())
    最新回复(0)