gpt4 book ai didi

java - 如何按字符串值(波斯字母)对 List 进行排序?
转载 作者:太空宇宙 更新时间:2023-11-03 13:48:47 25 4
gpt4 key购买 nike

我有一个包含两个字段(姓名和编号)的学生列表,我想按姓名(波斯语姓名)对列表进行排序,但是当我使用 Collections.sort 对列表进行排序时出现问题与一些波斯字母表,如“?”&“?”&“?”… 结果是: 但它必须是: "ь", "م", "ک"

这是我的代码:

 public class Student {
private String name;
private int number;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getNumber() {
return number;
}

public void setNumber(int number) {
this.number = number;
}

@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", number=" + number +
'}';
}

}

公共(public)课主要{

    public static void main(String[] args) {

List<Student> studentList = new ArrayList<Student>();

Student temp1 = new Student();
temp1.setName("ی");
temp1.setNumber(5);

Student temp2 = new Student();
temp2.setName("م");
temp2.setNumber(4);

Student temp3 = new Student();
temp3.setName("ک");
temp3.setNumber(3);

studentList.add(temp1);
studentList.add(temp2);
studentList.add(temp3);

// before sort
System.out.println("before sort");
for(Student student : studentList){
System.out.println("Student name: " + student.getName());
}

Locale locale = new Locale("fa");

System.out.println("--------------------");
System.out.println("Language: " + locale.getDisplayLanguage());
System.out.println("--------------------");

if (studentList.size() > 0) {
Collections.sort(studentList, new Comparator<Student>() {
@Override
public int compare(final Student object1, final Student object2) {
return Collator.getInstance(locale).compare(object1.getName(), object2.getName());
}
} );
}

// after sort
System.out.println("after sort");
for(Student student : studentList){
System.out.println("Student name: " + student.getName());
}

}

最佳答案

你可以使用整理器,看看这个:

Performing Locale-Independent Comparisons

Sorting arabic words in java

或者创建您自己的比较器。这是文档。

Object Ordering

以这种方式对这些字符串进行排序的原因是字符串是使用 UTF-16 字符表排序的。所以在 UTF-16 中,这些字符是:

  • 阿拉伯文字母 MEEM (U+0645)
  • 阿拉伯文字母 KEHEH (U+06A9)
  • 国际阿拉伯语字母波斯语 YEH (U+06CC)

关于java - 如何按字符串值(波斯字母)对 List<Object> 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771984/

25 4 0