2015-02-24 118 views
1

我要填寫一個HashMap<Integer,Double[]>如何在添加到Map時將double數組添加到Double數組?

Map<Integer,Double[]> cached_weights = new HashMap<Integer,Double[]>(); 

只有定期intdouble[],什麼是做到這一點的最好方法是什麼?

我看到this question,但它回答了相反的問題。

+0

它被稱爲「拳擊」。 – immibis 2015-02-24 03:47:15

+2

如果你想使用'int'類型作爲鍵而不是'Integer',那麼這是不可能的。另外'Double []'和'double []'不是協變的,'double []'不會被自動裝箱到'Double []'。 – Pshemo 2015-02-24 03:47:32

+2

另外,'Double []'不是* boxed'double []'(裝箱不適用於數組),並且您可以在hashmap中存儲'double []'。 – immibis 2015-02-24 03:47:45

回答

1

對於鍵(Integer),編譯器會自動爲您處理,您可以直接傳遞一個int值。

對於布爾數組,你可以處理這種方式與Java 8

Map<Integer, Double[]> foo = new HashMap<Integer, Double[]>(); 
double[] bar = new double[10]; 
//As you can see, 1 is passed directly and will be converted to Integer object. 
foo.put(1, Arrays.stream(bar) 
      .boxed() 
      .toArray(Double[]::new)); 

DoubleStreamboxed方法返回一個包含該流的要素,盒裝到雙流。

然後你得到一個流,你可以輕鬆地呼叫toArray轉換爲Double[]