[英]How can I apply the name of a field to an ArrayList and then add something to that ArrayList
[英]How can I sort an arraylist based on the name and the Arraylist contains name with Initial of a person?
例如:
我在ArrayList
添加了[A John, B Adam, K Henry]
。
我希望輸出為[B Adam, K Henry, A John]
根據名稱排序,但是排序時不應考慮人的名字縮寫。
我怎樣才能做到這一點?
您可以使用compareTo()方法。首先使用空格split(“”)拆分名稱,然后將所有名稱保存在字符串數組中,對上一個單詞和當前單詞使用compareTo()。
使用只比較名稱的比較器 :
List<String> list = Arrays.asList("A John", "B Adam", "K Henry");
list.sort(Comparator.comparing(s -> s.split(" ")[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
會是一種更可靠的方法。
我強烈建議在列表中使用比String更好的對象。 在這種情況下,您可以使用比較器來整理列表,或者使對象可比。
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.