黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Java集合遍歷的幾種方式

Java集合遍歷的幾種方式

更新時間:2021-05-20 11:14:28 來源:動力節點 瀏覽1400次

集合類的通用遍歷方式, 用迭代器迭代:

Iterator it = list.iterator();
while(it.hasNext()) {
  Object obj = it.next();
}

Map遍歷方式:

1.通過獲取所有的key按照key來遍歷

//Set<Integer> set = map.keySet(); //得到所有key的集合
for (Integer in : map.keySet()) {
    String str = map.get(in);//得到每個key多對用value的值
}

2.通過Map.entrySet使用iterator遍歷key和value

Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
     Map.Entry<Integer, String> entry = it.next();
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}

3.通過Map.entrySet遍歷key和value,推薦,尤其是容量大時

for (Map.Entry<Integer, String> entry : map.entrySet()) {
    //Map.entry<Integer,String> 映射項(鍵-值對)  有幾個方法:用上面的名字entry
    //entry.getKey() ;entry.getValue(); entry.setValue();
    //map.entrySet()  返回此映射中包含的映射關系的 Set視圖。
    System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}

4.通過Map.values()遍歷所有的value,但不能遍歷key

for (String v : map.values()) {
    System.out.println("value= " + v);
}

List遍歷方式:

第一種:

for(Iterator iterator = list.iterator();iterator.hasNext();){                    
    int i = (Integer) iterator.next();                   
    System.out.println(i);               
}

第二種:

Iterator iterator = list.iterator();
while(iterator.hasNext()){
    int i = (Integer) iterator.next();
    System.out.println(i);
}

第三種:

for (Object object : list) { 
    System.out.println(object); 
}

第四種:

for(int i = 0 ;i<list.size();i++) {  
    int j= (Integer) list.get(i);
    System.out.println(j);  
}

數據元素是怎樣在內存中存放的?

主要有2種存儲方式:

1.順序存儲,Random Access(Direct Access):

這種方式,相鄰的數據元素存放于相鄰的內存地址中,整塊內存地址是連續的。可以根據元素的位置直接計算出內存地址,直接進行讀取。讀取一個特定位置元素的平均時間復雜度為O(1)。正常來說,只有基于數組實現的集合,才有這種特性。Java中以ArrayList為代表。

2.鏈式存儲,Sequential Access:

這種方式,每一個數據元素,在內存中都不要求處于相鄰的位置,每個數據元素包含它下一個元素的內存地址。不可以根據元素的位置直接計算出內存地址,只能按順序讀取元素。讀取一個特定位置元素的平均時間復雜度為O(n)。主要以鏈表為代表。Java中以LinkedList為代表。

每個遍歷方法的實現原理是什么?

1.傳統的for循環遍歷,基于計數器的:

遍歷者自己在集合外部維護一個計數器,然后依次讀取每一個位置的元素,當讀取到最后一個元素后,停止。主要就是需要按元素的位置來讀取元素。

2.迭代器遍歷,Iterator:

每一個具體實現的數據集合,一般都需要提供相應的Iterator。相比于傳統for循環,Iterator取締了顯式的遍歷計數器。所以基于順序存儲集合的Iterator可以直接按位置訪問數據。而基于鏈式存儲集合的Iterator,正常的實現,都是需要保存當前遍歷的位置。然后根據當前位置來向前或者向后移動指針。

3.foreach循環遍歷:

根據反編譯的字節碼可以發現,foreach內部也是采用了Iterator的方式實現,只不過Java編譯器幫我們生成了這些代碼。

以上就是動力節點小編介紹的"Java集合遍歷的幾種方式",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: sese国产| a级毛片免费观看在线播放 a级毛片免费完整视频 | 成人做视频免费 | 国产精品2020观看久久 | 色视频在线观看视频 | 国产精品免费视频能看 | 欧美国产大片 | 91高清国产经典在线观看 | 成年人午夜剧场 | 久久免费高清视频 | 五月天婷婷一区二区三区久久 | 欧美日韩亚洲另类 | 国产精品亚洲精品日韩已方 | 手机看片国产欧美日韩高清 | 国产日韩在线视频 | 免费在线h | 日韩欧美不卡 | 成人福利软件 | 欧美日韩不卡中文字幕在线 | 青草视频网 | 老司机深夜影院入口aaaa | 99精品国产在这里白浆 | 亚洲欧美日韩中文字幕在线 | 波多野结衣免费观看视频 | 国产免费一级高清淫曰本片 | 97人人爽人人爽人人人爽 | 亚洲日本va中文字幕区 | 免费国产高清精品一区在线 | 亚洲伊人久久综合影院2021 | 99国产成人高清在线视频 | 2020国产大片天天看 | 日韩精品视频美在线精品视频 | 国产a一级毛片午夜剧院 | 168黄色网 | 国产无遮挡男女羞羞影院在线播放 | 欧美精品第一区 | 大陆一级黄色片 | 国产精品高清一区二区三区 | 国产成a人片在线观看视频99 | 日韩中文字幕免费 | 久青草视频免费视频播放线路1 |