Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将对象流转换为属性的链接列表_Java_Lambda_Java 8_Java Stream - Fatal编程技术网

Java 将对象流转换为属性的链接列表

Java 将对象流转换为属性的链接列表,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,我的目标是:使用Users的LinkedList,以优雅的Java-8方式提取他们用户名的LinkedList public static void main(String[] args) { LinkedList<User> users = new LinkedList<>(); users.add(new User(1, "User1")); users.add(new User(2, "User2")); users.add(new

我的目标是:使用
User
s的
LinkedList
,以优雅的Java-8方式提取他们用户名的
LinkedList

public static void main(String[] args) {

    LinkedList<User> users = new LinkedList<>();
    users.add(new User(1, "User1"));
    users.add(new User(2, "User2"));
    users.add(new User(3, "User3"));

    // Vanilla Java approach
    LinkedList<String> usernames = new LinkedList<>();
    for(User user : users) {
        System.out.println(user.getUsername());
        usernames.add(user.getUsername());
    }
    System.out.println("Usernames = " + usernames.toString());

    // Java 8 approach
    users.forEach((user) -> System.out.println(user.getUsername()));
    LinkedList<String> usernames2 = users.stream().map(User::getUsername). // Is there a way to turn this map into a LinkedList?
    System.out.println("Usernames = " + usernames2.toString());
}

static class User {
    int id;
    String username;

    public User() {
    }

    public User(int id, String username) {
        this.id = id;
        this.username = username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public int getId() {
        return id;
    }
}
publicstaticvoidmain(字符串[]args){
LinkedList用户=新建LinkedList();
添加(新用户(1,“用户1”);
添加(新用户(2,“用户2”);
添加(新用户(3,“用户3”);
//普通Java方法
LinkedList用户名=新建LinkedList();
for(用户:用户){
System.out.println(user.getUsername());
usernames.add(user.getUsername());
}
System.out.println(“Usernames=“+Usernames.toString());
//Java8方法
users.forEach((user)->System.out.println(user.getUsername());
LinkedList usernames2=users.stream().map(User::getUsername)。//有没有办法将此映射转换为LinkedList?
System.out.println(“Usernames=“+usernames2.toString());
}
静态类用户{
int-id;
字符串用户名;
公共用户(){
}
公共用户(int-id,字符串用户名){
this.id=id;
this.username=用户名;
}
public void setUsername(字符串用户名){
this.username=用户名;
}
公共无效集合id(内部id){
this.id=id;
}
公共字符串getUsername(){
返回用户名;
}
公共int getId(){
返回id;
}
}
我无法将
对象转换为
链接列表
。我可以把它变成一个数组(
Stream::toArray()
),然后把它变成一个
列表(
Arrays.asList(Stream::toArray())
),但看起来就是这样。。。不,谢谢


我遗漏了什么吗?

您可以使用这样的
收集器将结果放入
链接列表中:

LinkedList<String> usernames2 = users.stream()
                                .map(User::getUsername)
                                .collect(Collectors.toCollection(LinkedList::new));
LinkedList usernames2=users.stream()
.map(用户::getUsername)
.collect(Collectors.toCollection(LinkedList::new));