我制作了一个名为User
的类,它具有两个字符串属性:Login
和Password
。
我有一个包含所有现有用户的数据库(userList
,类型为ArrayList<User>
),我想知道是否已使用登录名。
我试图使用lambda表达式来做到这一点,但这不起作用:
ArrayList<String> loginList = null;
userListe.forEach(x->loginList.add(x.getLogin()));
我该如何解决?
答案 0 :(得分:0)
假设userListe
是List
:
List<String> loginList = userListe
.stream()
.map(x -> x.getLogin())
.collect(Collectors.toList));
说明:
最好使用List
而不是ArrayList
,因为始终最好使用接口而不是具体类型。首先,使用stream
创建一个User
对象流。使用map
,您可以使用适当的getter从对象中获取字段。最后,您可以使用collect
收集map方法返回的所有对象,在本例中为String
对象。
您的loginList
是null
,因此第一个forEach
将抛出NullPointerException
。另外,请记住,最好在lambda中具有纯功能,而无副作用。使用stream
和collect
可使您获得List
所需的对象,而不会产生副作用。