gpt4 book ai didi

java - 在 Java 中添加多个 Set

转载 作者:行者123 更新时间:2023-12-01 09:02:47 28 4
gpt4 key购买 nike

我有两个集合:我想要组合的 set1 和 set2。

set1 包含 personID 和地点:[1-NY, 2-CA, 3-MD, 1-TX, 3-VA]

set2 包含 personName 和地点:[John-NY, Bill-CA, Ron-CA, Rick-MD, John-TX, Rick-VA]

我想将这两个集合组合起来,这样我就能得到 personID、personName 和地点的输出:[1-John-NY, 2-Bill-CA, 2-Ron-CA, 3-Rick-MD, 1-约翰-TX,3-里克-VA]。

基本上,事情是:我想使用“地点”作为组合的 anchor 。

Set<String> set1 = new LinkedHashSet<String>();
Set<String> set2 = new LinkedHashSet<String>();
Set<String> combination = new LinkedHashSet<String>();

combination.addAll(set1);
combination.addAll(set2);

但是,我无法以预期的方式获得输出。任何建议请。谢谢!

最佳答案

你应该重新考虑一下你的方法。为了组合这两个集合,您应该创建某种查找表。我将使用简单的 HashMap 来实现此目的。该代码确实是不言自明的,但可以随意提问)

使用 Java 8:

    Set<String> personIds = new LinkedHashSet<>(Arrays.asList("1-NY", "2-CA", "3-MD", "1-TX", "3-VA"));
Set<String> personNames = new LinkedHashSet<>(Arrays.asList("John-NY", "Bill-CA", "Ron-CA", "Rick-MD", "John-TX", "Rick-VA"));

Map<String, String> personIdMap = personIds.stream().map(v -> v.split("-"))
.collect(Collectors.toMap(v -> v[1], v -> v[0]));

Set<String> combination = new LinkedHashSet<>();
personNames.forEach(name -> {
final String[] split = name.split("-");
final String personId = personIdMap.get(split[1]);
combination.add(personId + '-' + name);
});

使用 Java 7:

    Set<String> personIds = new LinkedHashSet<>(Arrays.asList("1-NY", "2-CA", "3-MD", "1-TX", "3-VA"));
Set<String> personNames = new LinkedHashSet<>(Arrays.asList("John-NY", "Bill-CA", "Ron-CA", "Rick-MD", "John-TX", "Rick-VA"));

Map<String, String> personIdMap = new HashMap<>();
for (String id : personIds) {
final String[] split = id.split("-");
personIdMap.put(split[1], split[0]);
}

Set<String> combination = new LinkedHashSet<>();
for (String name : personNames) {
final String[] split = name.split("-");
final String personId = personIdMap.get(split[1]);
combination.add(personId + '-' + name);
}

关于java - 在 Java 中添加多个 Set<String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41540763/

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