gpt4 book ai didi

java - 如何迭代 Hashmap 并与同一 Hashmap 中的其他键进行组合以比较它们的对象

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

如何迭代 Hashmap 并与同一 Hashmap 中的其他键进行组合来比较它们的对象

Map<String, Batch> map = new LinkedHashMap<String, Batch>();
map.put(A,batch1);
map.put(B,batch2);
map.put(C,batch3);
map.put(D,batch4);

我的要求是迭代上面的 HashMap ,并与同一 HashMap 中的其他键进行前向组合,并比较它们的对象,下面提到的组合。 AB、AC、AD、ABC、ABD、ACD、ABCD、 BC、BD、BCD、 光盘

我尝试了以下方法,但我能够获得两个项目集(AB、AC、AD、BC、BD 和 CD)的组合

创建了具有相同值的重复 HashMap map mapDuplicate = new LinkedHashMap();

for (String item : map.keySet()){
for (String item2 : mapDuplicate.keySet()){
if(item != item2){
compare batches and do stuff...............
}
}
mapDuplicate.remove(item);
}

请建议更好的解决方案/算法/引用来处理上述场景?

最佳答案

通过阅读您的问题下的评论,我认为您的问题是生成这些组合。您可以在后续步骤中处理的订单。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Scratch {
static List<String> list = Arrays.asList("A", "B", "C", "D");

public static void main(String[] args) {
List<String> result = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
result.addAll(restList(list.get(i), list.subList(i + 1, list.size())));
}
System.out.println(Arrays.toString(result.toArray()));
}

static List<String> restList(String input, List<String> inputList) {
List<String> restList = new ArrayList<>();
for (int i = 0; i < inputList.size(); i++) {
String x = input + inputList.get(i);
restList.add(x);
restList.addAll(restList(x, inputList.subList(i + 1, inputList.size())));
}
return restList;
}
}

如果运行上述代码,您将获得一个包含元素的列表:

[AB, ABC, ABCD, ABD, AC, ACD, AD, BC, BCD, BD, CD]

关于java - 如何迭代 Hashmap 并与同一 Hashmap 中的其他键进行组合以比较它们的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56767592/

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