我想删除重复项,例如{{1,2,3},{2,3,1},{3,2,1},{2,1,3}}是{2,3的重复项, 1}或给定4组中的任何一个。为此我将2D整数数组转换为LinkedHashSet,删除了重复项,但是当我转换回数组时(由于需要算法)我无法访问单个元素。它可能吗?如果没有,那么另一种方式是什么。如果是下面的code.given中的问题。请解决。
我自己的另一种想法:因为我认为通过字符串是可能的吗? 例如{{2,3,1},{ - 3,-2,-4},...........}插入Set中每个3元素集的ArrayList,例如{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();}
}
//在上面的代码中我无法访问单个元素,因为在数组中Set被插入为Object,即使我尝试使用((整数)a [i] [j])。intValue()我认为这是到期的到Arrays.asList(orderedpair3k [j])如何解决这个问题?
答案 0 :(得分:1)
似乎很简单:
Integer[][] result = new Integer[r.size()][3];
int c = o;
for (Set<Integer> s : r)
result[c++] = s.toArray(new Integer[3]);