java - 将对象的 ArrayList 转换为此对象的 ArrayList Java 中的字符串名称

标签 java arraylist tostring

我有一个 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/

相关文章:

java - 重写toString方法并避免碰撞

java - Integer.toString() 在内部是如何工作的?

java - 在一行上打印随机数组 : Java

java - 无法使用 POI 应用特定的单元格数据格式

java - 为什么 one ceil 函数给出不同的答案?

java - toString方法ArrayList简单递归

java - 内存中的数据操作

java - 多窗口处理

java - 如何在模态窗口上方显示工具提示内容?

javascript - React - 检查数组中是否已存在某个值?