以下是一些常见的排序问题示例:
List<Integer> numbers = Arrays.asList(5, 3, 8, 2, 1);
List<Integer> sortedNumbers = numbers.stream()
.sorted()
.collect(Collectors.toList());
System.out.println(sortedNumbers); // 输出:[1, 2, 3, 5, 8]
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<String> sortedNames = names.stream()
.sorted()
.collect(Collectors.toList());
System.out.println(sortedNames); // 输出:[Alice, Bob, Charlie, David]
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return name + " (" + age + " years old)";
}
}
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 20),
new Person("David", 35)
);
List<Person> sortedPeople = people.stream()
.sorted(Comparator.comparing(Person::getAge))
.collect(Collectors.toList());
System.out.println(sortedPeople); // 输出:[Charlie (20 years old), Alice (25 years old), Bob (30 years old), David (35 years old)]
在上述示例中,使用stream()
方法将集合转换为流,然后使用sorted()
方法进行排序。对于自定义对象,可以使用Comparator.comparing()
方法指定按照哪个属性进行排序。最后使用collect()
方法将排序后的结果收集到一个新的列表中。
由于getSex属性值为两位数和三位数导致的。如果您希望两位数在排序时被视为大于三位数,可以尝试以下方法:
Comparator<UserDTO> tierComparator = Comparator.comparing((UserDTOdto) -> Integer.parseInt(dto.getSex())).reversed();
Comparator<UserDTO> sortComparator = Comparator.comparing(UserDTO::getSort);
List<UserDTO> listReversedData = listData.stream()
.sorted(tierComparator.thenComparing(sortComparator))
.collect(Collectors.toList());
bayInfoDTO.setUserDTOList(listReversedData);
Comparator<UserDTO> tierComparator = Comparator.comparing((UserDTO dto) -> String.format("%3s", dto.getSex())).reversed();
Comparator<UserDTO> sortComparator = Comparator.comparing(UserDTO::getSort);
List<UserDTO> listReversedData = listData.stream()
.sorted(tierComparator.thenComparing(sortComparator))
.collect(Collectors.toList());
bayInfoDTO.setUserDTOList(listReversedData);
以上解决方案可以根据您的具体需求进行调整。请确保dataTypeComparator和sortComparator都按照预期的逻辑进行排序。