Java 从1元素集创建k元素集
我在java中声明了一个ArrayList a=[1,2,3,4,5]。我使用下面的循环创建了另一个ArrayList b:Java 从1元素集创建k元素集,java,for-loop,data-mining,apriori,Java,For Loop,Data Mining,Apriori,我在java中声明了一个ArrayList a=[1,2,3,4,5]。我使用下面的循环创建了另一个ArrayList b: for(int i = 0; i<a.size(); i++) { for(int j=i+1; j<a.size();j++) { b.add("{" + a.get(i)+ "," + a.get(j) + "}"); } } for(int i=0;i 将其放在一个方法中,该方法需要两个集
for(int i = 0; i<a.size(); i++)
{
for(int j=i+1; j<a.size();j++)
{
b.add("{" + a.get(i)+ "," + a.get(j) + "}");
}
}
for(int i=0;i
将其放在一个方法中,该方法需要两个集合s1
,s2
要生成b
,只需使用(a,a)
调用该方法即可
要生成c
,只需使用(a,b)
或(b,a)
调用该方法即可
随意重复
您只需添加一些逻辑,即可从集合中的项中删除}
或{
。或者,完全不要放置它们,只用于打印结果。我编写了一个递归方法,为您生成一个数字数组的所有排列:
public static void main(String ... args) {
List<Integer> numbers= new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
numbers.add(5);
for (int i=0; i<numbers.size(); i++) {
dfs(numbers.get(i), numbers, new ArrayList<Integer>(), numbers.size(), 0);
}
}
private static List<List<Integer>> resultOfResults= new ArrayList<>();
private static void dfs(int startNumber, List<Integer> numbers, List<Integer> result, int depth, int currentDepth) {
result.add(startNumber);
for (int i= 0; i < numbers.size(); i++) {
if (!result.contains(numbers.get(i))) {
dfs(numbers.get(i), numbers, new ArrayList<Integer>(result), depth, currentDepth + 1);
}
}
if (currentDepth + 1 == depth) {
resultOfResults.add(result);
return;
}
}
事实上,这是一个好主意。我没有考虑过一个……我会试试!!!谢谢!!我一定会试试!为什么会显示Java不支持菱形运算符的消息?它说我的源代码是1.6,并要求我使用源代码7。怎么做?啊哈,不要使用菱形运算符,而不要使用List number=new ArrayList();
putList numbers=new ArrayList();
同样适用于:而不是private static List resultOfResults=new ArrayList();
putprivate static List resultOfResults=new ArrayList();
我做了:private static List resultOfResult=new arrarylist();(不带菱形操作符)但我的问题不在于找到排列。正如我上面所说的。你能给我一个解决方案吗?
for (List<Integer> result : resultOfResults) {
System.out.println(Arrays.toString(result.toArray()));
}