開發(fā)規(guī)范(2)

集合轉數組和數組轉集合

  1. 使用集合轉數組的方法,必須使用集合的 toArray(T[] array),傳入的是類型完全 一樣的數組,大小就是 list.size()
說明:使用 toArray 帶參方法,入參分配的數組空間不夠大時,toArray 方法內部將重新分配 內存空間,并返回新數組地址;
如果數組元素大于實際所需,下標為[ list.size() ]的數組 元素將被置為 null,其它數組元素保持原值,因此最好將方法入參數組大小定義與集合元素 個數一致。
如果直接使用 toArray 無參方法存在問題,此方法返回值只能是 Object[]類,若強轉其它 類型數組將出現 ClassCastException 錯誤
List<String> list = new ArrayList<String>(2);        
list.add("guan");        
list.add("bao");         
String[] array = new String[list.size()];        
array = list.toArray(array); 
  1. 使用工具類 Arrays.asList()把數組轉換成集合時,不能使用其修改集合相關的方 法,它的 add/remove/clear 方法會拋出 UnsupportedOperationException 異常。
asList 的返回對象是一個 Arrays 內部類,并沒有實現集合的修改方法。Arrays.asList 體現的是適配器模式,只是轉換接口,后臺的數據仍是數組。 
    String[] str = new String[] { "you", "wu" };     
List list = Arrays.asList(str); 
第一種情況:list.add("yangguanbao"); 運行時異常。 
第二種情況:str[0] = "gujin"; 那么 list.get(0)也會隨之修改。 

集合

創(chuàng)建集合時指定集合大小,無法確認容量時就設置為16。
遍歷MAP集合使用entrySet 而不是keySet

說明:keySet 其實是遍歷了 2 次,一次是轉為 Iterator 對象,另一次是從 hashMap 中取出 key 所對應的 value。
       而 entrySet 只是遍歷了一次就把 key 和 value 都放到了 entry 中,效 率更高。如果是 JDK8,使用 Map.foreach 方法。 
正例:values()返回的是 V 值集合,是一個 list 集合對象;
      keySet()返回的是 K 值集合,是 一個 Set 集合對象;
      entrySet()返回的是 K-V 值組合集合。
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容