将对象列表转换为字符串数组

ben*_*bia 0 java

在我的主要课程中,我有: List<Person> allPeople = new ArrayList<>();

然后在类中我有一个方法,它返回所有人的String数组Id(Person有一个访问器方法getId()).

将列表转换为只有Ids为String的数组的最漂亮的方法是什么?

这是我目前的解决方案:

public String[] getAllId() {

    Object[] allPeopleArray = allPeople.toArray();
    String allId[] = new String[allPeople.size()];              

    for(int i=0; i<=allPeople.size()-1; i++){
        allId[i] = ((Person)allPeopleArray [i]).getId();                    
    }

    return allId;
}
Run Code Online (Sandbox Code Playgroud)

以上是有效的,但有没有"更好"的方法呢?

Mar*_*rcG 5

public String[] getAllId() {
    return allPeople.stream().map(Person::getId).toArray(String[]::new);
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,此答案需要Java 8中引入的新方法和语法. (2认同)