我需要添加一个前缀"ROLE_";到与对象中的字符串映射后收集的每个字符串。我分两个步骤完成了这项工作,如方法mappedListWithPrefix:中所示
class MyClass {
String uid;
}
////////
List<String> mappedListWithPrefix(List<MyClass> list) {
List<String> op = list.stream().map(MyClass::getUid).collect(Collectors.toList());//step 1
op.replaceAll(s -> "ROLE_"+s);//step 2
return op;
}
有没有一种方法可以在一个步骤中做到这一点,而不使用第二个列表,有点像map("ROLE_"+MyClass::getUid(?(请注意,这只是为了传达想法,此映射不会出错(
您可以添加第二个map
步骤:
List<String> op = list.stream()
.map(MyClass::getUid)
.map(s -> "ROLE_" + s)
.collect(Collectors.toList());
或只需在一个map
调用中执行两个操作:
List<String> op = list.stream()
.map(o -> "ROLE_" + o.getUid())
.collect(Collectors.toList());
选择哪一个主要取决于个人喜好。