我有一个 User 对象的 ArrayList。现在我只需要这些用户名的 ArrayList。有没有办法使用 toString()
在整个 ArrayList 上并将其转换为字符串名称的 ArrayList 而不是在 for 循环中执行此操作?我还覆盖了 User 类中的 toString,因此它返回用户名,我已经尝试了 ArrayList <String> names = usersList.toString()
但它没有用。
最佳答案
您可以使用 Google Collections API 执行此操作:
List<User> userList = ...;
List<String> nameList = Lists.transform(userList, new Function<User, String>() {
public String apply(User from) {
return from.toString(); // or even from.getName();
}
});
库已重命名为 Guava。
在 Java 8 中,使用流和方法引用,即使不使用 Guava,您现在也可以实现相同的目的:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class User {
private String name;
public User() {
}
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class App {
public static void main(String[] args) {
List<User> users = new ArrayList<>(Arrays.asList(
new User("Alan Turing"),
new User("John von Neumann"),
new User("Edsger W Dijkstra")
));
List<String> names = users
.stream()
.map(User::getName)
.collect(Collectors.toList());
System.out.println(names);
}
}
关于java - 将对象的 ArrayList 转换为此对象的 ArrayList Java 中的字符串名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3483749/