Arraylist对含有String(汉字需以拼音排序)类型的自定义类进行排序
时间: 2023-08-17 14:33:49 浏览: 146
要对一个 ArrayList 包含的自定义类按照字符串的拼音进行排序,需要满足两个条件:一是自定义类必须实现 Comparable 接口,二是要使用 Collections.sort 方法进行排序。
首先,在自定义类中实现 Comparable 接口,重写 compareTo 方法:
```java
import net.sourceforge.pinyin4j.PinyinHelper;
public class MyString implements Comparable<MyString> {
private String str;
public MyString(String str) {
this.str = str;
}
public String getStr() {
return str;
}
@Override
public int compareTo(MyString o) {
String pinyin1 = PinyinUtils.toPinyin(this.str);
String pinyin2 = PinyinUtils.toPinyin(o.str);
return pinyin1.compareTo(pinyin2);
}
}
```
上述代码中,MyString 类实现了 Comparable 接口,并重写了 compareTo 方法。在 compareTo 方法中,使用 PinyinUtils.toPinyin 方法将字符串转换为拼音,然后按照拼音进行比较。
然后,在需要排序的 ArrayList 中使用 Collections.sort 方法进行排序:
```java
ArrayList<MyString> myStrings = new ArrayList<>();
myStrings.add(new MyString("张三"));
myStrings.add(new MyString("李四"));
myStrings.add(new MyString("王五"));
Collections.sort(myStrings); // 按照 MyString 类中定义的 compareTo 方法排序
for (MyString myString : myStrings) {
System.out.println(myString.getStr());
}
```
上述代码会按照字符串的拼音进行排序并输出结果。如果需要按照其他条件排序,只需在 compareTo 方法中修改比较的逻辑即可。
阅读全文