-1

重複を削除したい例:{ {1,2,3}, {2,3,1},{3,2,1}, {2,1,3} } は {2,3,1} の重複または指定された 4 つのセットから任意の 1 つ。そうでない場合、他の方法は何ですか。はいの場合、コードの問題は何ですか。以下に示します。解決してください。

私自身の他の考え: 文字列を通して考えると、それは可能ですか? 例: { {2,3,1},{-3,-2,-4},.......... } セットに挿入 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();}
}   

//上記のコードでは、((Integer)a[i][j]).intValue() を使用しようとしても配列セットがオブジェクトとして挿入されるため、個々の要素にアクセスできません。これは配列が原因だと思います。 asList(orderedpair3k[j]) この問題はどのように解決できますか?

4

1 に答える 1

1

非常に簡単に思えます:

Integer[][] result = new Integer[r.size()][3];
int c = o;
for (Set<Integer> s : r)
  result[c++] = s.toArray(new Integer[3]);
于 2012-06-06T05:01:27.333 に答える