gpt4 book ai didi

java - 如何获取所有列表的列表,其中恰好包含列表列表的每个列表的一个元素

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

正如您可能已经从标题中理解的那样,我需要一些聪明的思考:)

我有一个 List<List<Object>>目的。如果您将 Object 对象视为整数,您可以这样看:

{{1,2},{10,20,30},{100}}

我需要得到所有可能的列表,其中只包含每个列表的一个元素,也就是说,想出这个:

{{1,10,100},{1,20,100},{1,30,100},{2,10,100},{2,20,100},{2,30,100}}

当然,在编译时您并不知道列表将包含多少项,因此您不能依赖 for 的重叠。循环...

你是怎么想到这个的?时间限制与我的问题无关,因为列表可能包含的元素很少。

最佳答案

迭代算法。

public class A {
public static List<List<Integer>> combinations(List<List<Integer>> inputList) {
List<List<Integer>> result = new LinkedList<List<Integer>>();
for (Integer i : inputList.get(0)) {
List<Integer> temp = new ArrayList<Integer>(1);
temp.add(i);
result.add(temp);
}
for (int i = 1; i < inputList.size(); i++) {
result = make(result, inputList.get(i));
}
return result;
}

private static List<List<Integer>> make(List<List<Integer>> in, List<Integer> n) {
List<List<Integer>> res = new LinkedList<List<Integer>>();
for (List<Integer> l : in) {
for (Integer i : n) {
List<Integer> cur = new ArrayList<Integer>(l.size() + 1);
cur.addAll(l);
cur.add(i);
res.add(cur);
}
}
return res;
}
public static void main(String[] args) {
List<List<Integer>> inputList = new ArrayList();
inputList.add(new ArrayList<Integer>() {{
add(1);
add(2);
}});
inputList.add(new ArrayList<Integer>() {{
add(10);
add(20);
add(30);
}});
inputList.add(new ArrayList<Integer>() {{
add(100);
}});
System.out.println(combinations(inputList));
}
}

*请注意,此代码不适用于生产!您应该将 LinkedList 替换为具有初始大小的 ArrayList,进行检查等。

upd 提供了使用示例。有一些代码改进。但它仍然只是草稿。我不建议您在实际任务中使用它。

关于java - 如何获取所有列表的列表,其中恰好包含列表列表的每个列表的一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5220701/

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