我有一个字符串值集合。如果值之一是“ *”,我想用另外3个值代替,例如“ X”,“ Y”和“ Z”。
换句话说,我想将[“ A”,“ B”,“ *”,“ C”]转换为[“ A”,“ B”,“ X”,“ Y”,“ Z”,“ C”]。顺序无关紧要,因此只需删除其中一个并添加其他内容即可。这些是我可以想到的使用示例的方式:
Collection<String> additionalValues = Arrays.asList("X","Y","Z"); // or set or whatever
if (attributes.contains("*")) {
attributes.remove("*");
attributes.addAll(additionalValues);
}
或者
attributes.stream()
.flatMap(val -> "*".equals(val) ? additionalValues.stream() : Stream.of(val))
.collect(Collectors.toList());
最有效的方法是什么?再说一次,顺序并不重要,理想情况下,我想删除重复项(所以可能是流中的distinct()或HashSet?)。
蝴蝶不菲
饮歌长啸
相关分类