我们如何从LinkedHashset <set <integer>访问单个int值?通过字符串是可能的</set <integer>

时间:2012-06-06 04:49:07

标签: java

我想删除重复项,例如{{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])如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

似乎很简单:

Integer[][] result = new Integer[r.size()][3];
int c = o;
for (Set<Integer> s : r)
  result[c++] = s.toArray(new Integer[3]);