大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 Java集合遍歷的幾種方式

Java集合遍歷的幾種方式

更新時(shí)間:2021-05-20 11:14:28 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1285次

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

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);//得到每個(gè)key多對(duì)用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,推薦,尤其是容量大時(shí)

for (Map.Entry<Integer, String> entry : map.entrySet()) {
    //Map.entry<Integer,String> 映射項(xiàng)(鍵-值對(duì))  有幾個(gè)方法:用上面的名字entry
    //entry.getKey() ;entry.getValue(); entry.setValue();
    //map.entrySet()  返回此映射中包含的映射關(guān)系的 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);  
}

數(shù)據(jù)元素是怎樣在內(nèi)存中存放的?

主要有2種存儲(chǔ)方式:

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

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

2.鏈?zhǔn)酱鎯?chǔ),Sequential Access:

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

每個(gè)遍歷方法的實(shí)現(xiàn)原理是什么?

1.傳統(tǒng)的for循環(huán)遍歷,基于計(jì)數(shù)器的:

遍歷者自己在集合外部維護(hù)一個(gè)計(jì)數(shù)器,然后依次讀取每一個(gè)位置的元素,當(dāng)讀取到最后一個(gè)元素后,停止。主要就是需要按元素的位置來讀取元素。

2.迭代器遍歷,Iterator:

每一個(gè)具體實(shí)現(xiàn)的數(shù)據(jù)集合,一般都需要提供相應(yīng)的Iterator。相比于傳統(tǒng)for循環(huán),Iterator取締了顯式的遍歷計(jì)數(shù)器。所以基于順序存儲(chǔ)集合的Iterator可以直接按位置訪問數(shù)據(jù)。而基于鏈?zhǔn)酱鎯?chǔ)集合的Iterator,正常的實(shí)現(xiàn),都是需要保存當(dāng)前遍歷的位置。然后根據(jù)當(dāng)前位置來向前或者向后移動(dòng)指針。

3.foreach循環(huán)遍歷:

根據(jù)反編譯的字節(jié)碼可以發(fā)現(xiàn),foreach內(nèi)部也是采用了Iterator的方式實(shí)現(xiàn),只不過Java編譯器幫我們生成了這些代碼。

以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"Java集合遍歷的幾種方式",希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲综合欧美 | 国产这里只有精品 | 大色综合色综合网站 | 久久国产精品永久免费网站 | 亚洲国产婷婷俺也色综合 | 四虎免费影视 | 亚洲va欧美va | 浮力影院欧美三级日本三级 | 免费一级a毛片在线播出 | 久久国产精品99久久久久久老狼 | 日本成人毛片 | 国产成人精品曰本亚洲77美色 | 亚洲精品乱码久久久久久v 亚洲精品乱码久久久久久麻豆 | 国产乱肥老妇精品视频 | 一国产大片在线观看 | 久久新地址 | 国产福利精品在线观看 | 欧美亚洲精品在线 | 精品伊人久久久久7777人 | 亚洲第一永久在线观看 | 欧美99视频 | 天天插天天干 | 亚洲国产高清视频在线观看 | xx欧美老妇| 欧美日韩一区二区三在线 | 青青青草视频在线观看 | 国产免费一区二区三区在线观看 | 99福利在线观看 | 免费黄色一级网站 | 99在线观看精品 | 黄片毛片在线看 | 久久婷婷综合在线视频观看6 | 亚洲精品国产一区二区图片欧美 | 欧美日韩精品高清一区二区 | 国产精品欧美亚洲区 | 毛片大全网站 | 老司机免费精品视频 | 老司机午夜精品视频在线观看免费 | 外国成人网在线观看免费视频 | 奇米网第四色 | 在线成人中文字幕 |