我如何组合两个Set Inside HashMap java的值

时间:2017-09-29 09:11:16

标签: java algorithm for-loop collections hashmap

我在一个hashmap中有两个Set,我希望在另一个Set中合并那些值:

A, B

例如,我在第一次迭代中的第一个HashSet包含这些值:Set<String> elementValues1 = new HashSet<String>(); elementValues1.add("A"); elementValues1.add("B");

喜欢:

C, D

和我在第二次迭代中的第二个Set包含:Set<String> elementValues2 = new HashSet<String>(); elementValues2.add("C"); elementValues2.add("D");

喜欢:

Set<String> elementValues3 = new HashSet<String>();

我想在循环中创建另一个组合两个Set的值: 喜欢:

elementValues3

void Reset() { parentAttribute = newValue ; } 应包含:     A-C     广告     公元前     B-d

有人可以帮我解决这个问题,提前谢谢

2 个答案:

答案 0 :(得分:5)

如果您真的想要使用 - 分隔符的String对,只需循环两个集合并将合并后的值添加到第三个:

Set<String> elementValues3 = new HashSet<String>();
for (String s1: elementValues1) {
    for (String s2: elementValues2) {
        elementValues3.add(s1 + "-" + s2);
    }
}

所得到的结果将是:

  

[A-C,A-D,B-C,B-D]

答案 1 :(得分:5)

在Java 8中,您可以从流中受益:

Set<String> newSet 
       = elementValues1.stream()
       .flatMap(a -> elementValues2.stream()
       .map(b -> a + '-' + b))
       .collect(Collectors.toSet());