日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java集合的遍历_Java集合之遍历

發(fā)布時間:2025/3/12 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java集合的遍历_Java集合之遍历 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在Java開發(fā)中,集合,可以說使我們必然要使用到的一個框架。對集合的遍歷也是我么經(jīng)常要進行的操作,而遍歷操作又有多種,下面就對集合遍歷進行以下總結(jié)。

一、List、Set的遍歷

List與Set都繼承了Collection接口,從某種程度上來說可以將List和Set看作同一種類型,因此對于他們的遍歷方式也是相同的。

下面以List為例進行講述

List lists = new ArrayList<>();

lists.add("A");

lists.add("B");

lists.add("C");

lists.add("D");

lists.add("E");

lists.add("F");

方式一:

普通for循環(huán)

for (int i = 0; i < lists.size(); i++){

System.out.println(lists.get(i));

}

當然這種方式對于Set集合是不適用的,因為Set集合中并沒有g(shù)et index方法。

方式二:

for-each循環(huán)

for(String s : lists){

System.out.println(s);

}

對于這種方式的遍歷,是會存在一些問題的。首先,每次遍歷集合類時,都需要寫很多樣板代碼,對遍歷進行改造也很麻煩,需要修改每一個for循環(huán)。并且這樣做也模糊了代碼的本意,需閱讀完整個循環(huán)體才能理解這段代碼的意圖,無形當中增加了時間成本。

方式三:

使用Iterator外部迭代

Iterator iterator = lists.iterator();

while(iterator.hasNext()){

System.out.println(iterator.next());

}

方式四:

使用Iterator迭代

for (Iterator iterator = lists.iterator(); iterator.hasNext();)

{

String string = (String) iterator.next();

}

實際上方式四和方式三是類似的,區(qū)別只不過是方式三使用while循環(huán),方式四使用for循環(huán)。

并且從內(nèi)部來說方式二(for-each循環(huán))與方式三、方式四(Iterator遍歷)其實是相同的,屬于外部迭代,只是形式不同。for-each其實是一個封裝了迭代的語法糖。

但從性能上來說,使用Iterator性能會更好些。

總體上說,無論是for-each循環(huán)還是迭代器遍歷都會將行為和方法混為一談,很難抽象出各種不同的操作。

方式五:

Stream內(nèi)部迭代

List lists = new ArrayList();

lists.add("A");

lists.add("B");

lists.add("Ct");

lists.add("Dt");

lists.add("Et");

lists.add("Ft");

long count = lists.stream().filter(new Predicate(){

@Override

public boolean test(String t){

return t.endsWith("t");

}

}).count();

System.out.println(count);

在這里我們過濾出以"t"結(jié)尾的字符串,并打印出這樣字符串的個數(shù)。

這是Java8新出來的一個類,Stream使用函數(shù)式編程的方式在集合類上進行復雜操作的工具。我們可以通過這種流機制、Stream類中的各種操作符以及Java中的函數(shù)接口去做任何我們想做的事情,并且代碼的可讀性也大大提高。

二、Map的遍歷

Map maps = new HashMap();

maps.put(1, "A");

maps.put(2, "B");

maps.put(3, "C");

maps.put(4, "D");

maps.put(5, "E");

方式一:

for-each單獨遍歷key和value

//遍歷keys

for(Integer key : maps.keySet()){

System.out.println(key);

}

//遍歷values

for(String value : maps.values()){

System.out.println(value);

}

方式二:

先遍歷keys,然后通過key查找值

for(Integer key : maps.keySet()){

String value = maps.get(key);

System.out.println(key+":"+value);

}

方式三:

通過Entry進行遍歷

for (Map.Entry entry : maps.entrySet()){

Integer key = entry.getKey();//獲取key

String value = entry.getValue();//獲取value

System.out.println(key + ":" + value);

}

方式四:

使用迭代器進行遍歷

Iterator> iterator = maps.entrySet().iterator();

while (iterator.hasNext()){

Map.Entry entry = iterator.next();

Integer key = entry.getKey();//獲取key

String value = entry.getValue();//獲取value

}

四種遍歷方式的比較

在這四種方式中,方式二是效率最低的一種方式,因為從從鍵取值的get方法是耗時的操作,所以并不推薦使用此方式。

方式一在性能上比方式三要好一些,并且方式一的代碼更加干凈易讀。

在性能方面,方式四與方式一可以說是相同的。

總結(jié)

以上是生活随笔為你收集整理的java集合的遍历_Java集合之遍历的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。