import java.text.Collator;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
public class ChineseSort {
public static void main(String[] args) {
List<Person> persons = new ArrayList<>();
persons.add(new Person("张三", 20));
persons.add(new Person("李四", 25));
persons.add(new Person("王五", 22));
persons.add(new Person("赵六", 28));
persons.add(new Person("钱七", 24));
List<Person> sortedPersons = persons.stream()
.sorted(Comparator.comparing(Person::getName, new ChineseComparator()))
.collect(Collectors.toList());
System.out.println(sortedPersons);
}
}
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 "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
class ChineseComparator implements Comparator<String> {
private Collator collator = Collator.getInstance(Locale.CHINA);
@Override
public int compare(String o1, String o2) {
return collator.compare(o1, o2);
}
}
在这个代码模型中,我们定义了一个Person
类,其中包含一个name
字段和一个age
字段。
然后,我们定义了一个persons
集合,其中包含了一些Person
对象。
接着,我们使用Java 8中的Stream流对persons
集合进行排序,排序时使用了Comparator.comparing
方法来指定按照Person
对象中的name
字段进行排序,同时使用了ChineseComparator
类来进行中文排序。
最后,我们使用collect
方法将排序后的流转换为一个List集合,并将其赋值给sortedPersons
变量。
最终,我们输出sortedPersons
集合中的元素。