例如:
我在[A John, B Adam, K Henry]中添加了一个ArrayList。
我要输出为[B Adam, K Henry, A John]
按名称排序,但排序时不应考虑人的首字母。
我该怎么做?
发布于 2017-06-19 10:57:42
我强烈建议在列表中使用比字符串更好的对象。在这种情况下,您可以使用比较器来排序您的列表,或者使您的对象具有可比性。
import java.util.ArrayList;
import java.util.Collections;
public class ComparatorExample {
static class Person implements Comparable<Person> {
private String initial;
private String surName;
public Person(final String initial, final String surName) {
this.initial = initial;
this.surName = surName;
}
public String getInitial() {
return initial;
}
public void setInitial(final String initial) {
this.initial = initial;
}
public String getSurName() {
return surName;
}
public void setSurName(final String surName) {
this.surName = surName;
}
@Override
public int compareTo(final Person o) {
return surName.compareTo(o.surName);
}
@Override
public String toString() {
return initial + ' ' + surName;
}
}
public static void main(String[] args) {
Person a = new Person("A", "John");
Person b = new Person("B", "Adam");
Person c = new Person("K", "Henry");
ArrayList<Person> list = new ArrayList<>();
list.add(a);
list.add(b);
list.add(c);
System.out.println(list);
Collections.sort(list);
System.out.println(list);
}
}发布于 2017-06-19 09:11:49
使用只比较名称的比较器:
List<String> list = Arrays.asList("A John", "B Adam", "K Henry");
list.sort(Comparator.comparing(s -> s.split(" ")[1]));发布于 2017-06-19 09:09:34
您可以使用compareTo()方法。首先使用空格拆分(“")分隔名称,然后将所有名称保存在字符串数组中,使用compareTo()表示prev和curr。
https://stackoverflow.com/questions/44626319
复制相似问题