2013-04-19 40 views
2

我想要做的是把一個陣列(TEMP_X)到HashSet的唯一的事,但我得到了HashSet的錯誤:發現HashSet中沒有合適的構造函數(列表)HashSet的編譯錯誤

public PSResidualReduction(int Xdisc[][], double[][] pat_cand, int k) { 

     for (int i = 0; i < Xdisc.length; i++) { 
      int[] temp_X; 
      temp_X = new int[Xdisc[0].length]; 
      for (int s = 0; s < Xdisc[0].length; s++) { 
       temp_X[s] = Xdisc[i][s]; 
      } 
      HashSet<Integer> temp_XList = new HashSet<Integer>(Arrays.asList(temp_X)); 
     } 

    } 

任何想法我怎麼能解決它?

回答

2

Arrays#asList接受一個類型數組,這意味着所有使用的元素都需要是Object類型而不是基元。

使用一個Integer陣列代替:

Integer[] temp_X; 

這將允許Arrays#asList被用來對包裝類:

HashSet<Integer> temp_XList = new HashSet<Integer>(Arrays.asList(temp_X)); 
+0

完美的主意!謝謝 – MTT

+0

@Vahid Reimeus並不是建議你不要使用'HashSet'。他建議你將'temp_X'從'int []'改爲'Integer []'。交替地將'temp_X'改成'List '。 –

+0

是的,你是對的。我以前沒有完全閱讀過解決方案。 – MTT

1
Arrays.asList(temp_X); temp_X

必須是對象數組,而不是原始類型數組。並且HashSet<T>不支持原始類型。您必須將temp_X中的每個int轉換爲Integer並逐個添加到temp_xList