2014-02-21 60 views
0

我有一個簡短的問題,我有點不清楚哪一個是更好的做法。在集合中使用整數或int對於每個集合

說我有一個集合,C,保存數字3,5和8

Collection<Integer> c = new ArrayList<Integer>(); c.add(3); c.add(5); c.add(8);

我明白for-each循環的想法,但是我不清楚一個組成部分。

我可以寫:for(Integer i: c){}for(int i: c)

如果可能的話,請評論速度,功效,優點和缺點,或每個。

+0

第二個可以拋出一個NPE是你的集合包含一個'null'元素。 –

+0

可能的重複[爲什麼有Java包裝類?](http://stackoverflow.com/questions/3579035/why-are-there-wrapper-classes-in-java) – femtoRgon

回答

2

這取決於您在for-each循環內所做的操作,以及您是否需要「重新設置」int,或者您需要多長時間才能取消裝箱Integer。這也取決於如何或如果你想要處理null - 如果你想要null被允許,你必須使用Integer

坦率地說,這兩種方式都不太可能產生顯着差異。

1

整數將int值映射爲對象,所以它可以爲null,但int不能。 所以int是一個基本類型,所以它使用的內存比Integer對象更少。

+1

但你已經有一個盒裝的'整數',所以你不會以任何方式存儲或丟失內存。 –

1

您的集合包含Integer s,所以最好使用for (Integer i: c)進行迭代。您需要這樣做以避免不必要的拆箱Integerint