映射后,如何将前缀附加到列表中的每个字符串



我需要添加一个前缀"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());

选择哪一个主要取决于个人喜好。

最新更新