我想删除重复项,例如{ {1,2,3}, {2,3,1},{3,2,1},{2,1,3} } 是 {2,3,1} 的重复项或给定 4 个集合中的任何一个。为此,我将 2D 整数数组转换为 LinkedHashSet,它删除了重复项,但是当我转换回数组时(由于算法需要),我无法访问单个元素。这可能吗?如果不是,另一种方法是什么。如果是,代码中有什么问题。下面给出。请解决。
我自己的其他想法:我认为通过字符串可能吗?例如 { {2,3,1},{-3,-2,-4},............ } 在 Set 中插入,制作每个 3 个元素集合的 ArrayList eg{2,3,1 },{-3,-2,-4},{3 element}, .....然后 parseInt 以 {2},{3},{1},{-3},{- 2},{-4},... 会起作用吗?
import java.util.*;
class demo
{
Integer[][] orderedpair3k={{1,2,3},{1,3,-2},{2,3,-1},{1,2,3},{1,-3,-2},{2,-3,-1},{1,-2,-3},{1,3,2},{-2,3,-1},{1,-2,3},{1,-3,2},{-2,-3,-1}};
Set<Set<Integer>> r = new LinkedHashSet<Set<Integer>>();
Object[][] a;
public void init_clauses()
{
removeDuplicate();
System.out.println(r);
backToArray();
for(int i=0;i<a.length;i++)
System.out.println(a[0][i]);
}
public void removeDuplicate()
{
int i=orderedpair3k.length;
for(int j=0;j<i;j++)
r.add(new LinkedHashSet<Integer>(Arrays.asList(orderedpair3k[j])));
}
public void backToArray()
{
ArrayList<Set<Integer>> arr=new ArrayList<Set<Integer>>(r);
a = new Object[arr.size()][3];
for(int i=0;i<a.length;i++)
a[i]=arr.toArray(new Object[i]);
}
}
public class sat
{
public static void main(String[] arg){
demo S = new demo();
S.init_clauses();}
}
//在上面的代码中,我无法访问单个元素,因为即使我尝试使用 ((Integer)a[i][j]).intValue() 在数组中插入 Set 作为对象,我认为这是由于数组。 asList(orderedpair3k[j]) 如何解决这个问题?