gpt4 book ai didi

java - 将一个键值映射到 Map 中另一个键值的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:27 24 4
gpt4 key购买 nike

我有一些 map ,我想计算它们的笛卡尔积。有人可以推荐一个好的算法吗:

数据:

Key1    {100,101,102}

Key2 {200,201}

Key3 {300}

要求的输出:(顺序很重要)

100,200,300
101,200,300
102,200,300
100,201,300
101,201,300
102,201,300

Map 是动态的,因此键和值的大小可以变化。

谢谢。

最佳答案

您将希望切换到使用 LinkedHashMap,以便在遍历键时保留顺序。

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

public class CartesianPrint {

public static void main(String[] args) {
Map<Integer,List<Integer>> groupMap = new LinkedHashMap<Integer,List<Integer>>();

groupMap.put(1,Arrays.asList(new Integer[]{100,101,102}));
groupMap.put(2,Arrays.asList(new Integer[]{200,201}));
groupMap.put(3,Arrays.asList(new Integer[]{300}));

List<List<Integer>> values = new ArrayList<List<Integer>>(groupMap.values());
int[] printList = new int[values.size()];
print(values,printList,values.size()-1);
}

static void print(List<List<Integer>> values, int[] printList, int level){
for (Integer value: values.get(level)) {
printList[level] = value;
if(level == 0){
System.out.println(Arrays.toString(printList));
}else{
print(values,printList,level-1);
}
}
}

}

关于java - 将一个键值映射到 Map 中另一个键值的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6790530/

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