例如:
我在[A John, B Adam, K Henry]
中添加了ArrayList
。
我希望输出为[B Adam, K Henry, A John]
根据名称进行排序,但在排序时不应考虑一个人的首字母。
我该怎么做?
答案 0 :(得分:2)
你可以使用compareTo()方法..首先使用空格分割(“”)拆分名称,然后将所有名称保存在字符串数组中,使用compareTo()作为prev word和curr word ..
答案 1 :(得分:2)
使用仅比较名称的comparator:
List<String> list = Arrays.asList("A John", "B Adam", "K Henry");
list.sort(Comparator.comparing(s -> s.split(" ")[1]));
答案 2 :(得分:1)
为您的人创建一个班级Person
,并使用Comparator
对列表进行排序。
人类:
public class Person {
private String surname;
private String forename;
public Person(String forename, String surname) {
this.surname = surname;
this.forename = forename;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getForename() {
return forename;
}
public void setForename(String forename) {
this.forename = forename;
}
}
<强>分拣:强>
@Test
public void testSortPersons() {
List<Person> people = Arrays.asList(new Person("John", "A"),
new Person("Adam", "B"),
new Person("Henry", "K"));
people.sort(Comparator.comparing(Person::getForename));
}
通常一种更健壮的方法是让一个类包含您的人的数据,而不是使用Strings
。
答案 3 :(得分:0)
我强烈建议在列表中使用更好的对象然后使用String。 在这种情况下,您可以使用比较器来整理列表,或使对象具有可比性。
$itemDB->set('isAvailable', (int) $options['isAvailable']);
$itemDB->where('id', $options['id']);
$itemDB->update('Item');