将一系列对象转换为属性的链表

11 浏览
0 Comments

将一系列对象转换为属性的链表

我的目标:以一种优雅的Java 8方式,从一个LinkedList中提取出一个LinkedList的用户名列表。

public static void main(String[] args) {

LinkedList users = new LinkedList<>();

users.add(new User(1, "User1"));

users.add(new User(2, "User2"));

users.add(new User(3, "User3"));

// 传统的Java方法

LinkedList usernames = new LinkedList<>();

for(User user : users) {

System.out.println(user.getUsername());

usernames.add(user.getUsername());

}

System.out.println("Usernames = " + usernames.toString());

// Java 8方法

users.forEach((user) -> System.out.println(user.getUsername()));

LinkedList usernames2 = users.stream().map(User::getUsername).collect(Collectors.toCollection(LinkedList::new));

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;

}

}

我在尝试将Stream对象转换为LinkedList时遇到了困难。我可以将其转换为数组(Stream::toArray()),然后将数组转换为List(Arrays.asList(Stream::toArray())),但这种方法看起来不太优雅。我是否漏掉了什么重要的东西?

0