我有一個簡短的問題,我有點不清楚哪一個是更好的做法。在集合中使用整數或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)
?
如果可能的話,請評論速度,功效,優點和缺點,或每個。
我有一個簡短的問題,我有點不清楚哪一個是更好的做法。在集合中使用整數或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)
?
如果可能的話,請評論速度,功效,優點和缺點,或每個。
這取決於您在for-each循環內所做的操作,以及您是否需要「重新設置」int
,或者您需要多長時間才能取消裝箱Integer
。這也取決於如何或如果你想要處理null
- 如果你想要null
被允許,你必須使用Integer
。
坦率地說,這兩種方式都不太可能產生顯着差異。
整數將int值映射爲對象,所以它可以爲null,但int不能。 所以int是一個基本類型,所以它使用的內存比Integer對象更少。
但你已經有一個盒裝的'整數',所以你不會以任何方式存儲或丟失內存。 –
您的集合包含Integer
s,所以最好使用for (Integer i: c)
進行迭代。您需要這樣做以避免不必要的拆箱Integer
至int
。
第二個可以拋出一個NPE是你的集合包含一個'null'元素。 –
可能的重複[爲什麼有Java包裝類?](http://stackoverflow.com/questions/3579035/why-are-there-wrapper-classes-in-java) – femtoRgon