gpt4 book ai didi

java - 在Java中用多个元素替换集合中的元素的最佳方法

转载 作者:行者123 更新时间:2023-12-02 02:02:43 25 4
gpt4 key购买 nike

我有一个字符串值的集合。如果其中一个值是“*”,我想用另外 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?)。

最佳答案

我的做法与您的第一种方式非常相似:

if (attributes.remove("*")) {
attributes.addAll(additionalValues);
}

您不需要单独的 removecontains 调用 for a correctly-implemented collection :

[Collection.remove(Object)] Removes a single instance of the specified element from this collection, if it is present (optional operation). More formally, removes an element e such that (o==null ? e==null : o.equals(e)), if this collection contains one or more such elements. Returns true if this collection contained the specified element (or equivalently, if this collection changed as a result of the call).

关于java - 在Java中用多个元素替换集合中的元素的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51333129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com