将对象属性列表加入String

win*_*ell 23 java lambda java-8 java-stream

我现在正在学习lambda,我想知道如何用lambda一行编写这段代码.

我有一个Person包括IDname字段的类

目前,我有一个List<Person>存储这些Person对象.我想要完成的是获取一个由人的id组成的字符串.

"id1,id2,id3".

我怎样才能用lambda实现这个目标?

Ous*_* D. 29

要检索String由分隔符分隔的所有ID的组成,","首先必须mapPersonID转换为新流,然后可以应用该流Collectors.joining.

String result = personList.stream().map(Person::getId)
                          .collect(Collectors.joining(","));
Run Code Online (Sandbox Code Playgroud)

如果您的ID字段不是String,而是一个int或其他原始数字类型,那么您应该使用以下解决方案:

String result = personList.stream().map(p -> String.valueOf(p.getId()))
                          .collect(Collectors.joining(","));
Run Code Online (Sandbox Code Playgroud)

  • 或者`.map(Person :: getId).map(String :: valueOf)` (11认同)

ΦXo*_*a ツ 5

流到地图,收集到列表!

List<String> myListofPersons = personList.stream()
          .map(Person::getId)
          .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

如果您在 String 对象中需要它,请加入列表

String res = String.join(" , ", myListStringId);
System.out.println(res);
Run Code Online (Sandbox Code Playgroud)