java集合长整型Comparator排序问题

现在有一个长整型的数组,想根据大小排序,但是出来后的结果不是想要的,请问这是怎么回事呢?

img

img

public static void main(String[] args) {
    List<Long> list = new ArrayList<>();
    list.add(20241021000159L);
    list.add(20211020000258L);
    list.add(20231021000159L);
    list.add(20220211160441L);
    list.add(20211029080608L);

    list.sort((a, b) -> a.compareTo(b)); // 你的写法
    list.forEach(System.out::println);

    list.sort(Long::compareTo); // lambda写法
    list.forEach(System.out::println);

    List<Long> result = list.stream().sorted(Long::compareTo).collect(Collectors.toList()); // stream
    result.forEach(System.out::println);

  }

差值由long强转int出问题了;换个写法

o1 == o2 ? 0 : o1 > 02 ? 1: -1;