導航:首頁 > 編程語言 > javaiterator遍歷

javaiterator遍歷

發布時間:2023-01-01 01:53:05

java Map 怎麼遍歷

關於java中遍歷map具體有四種方式,請看下文詳解。

1、這是最常見的並且在大多數情況下也是最可取的遍歷方式,在鍵值都需要時使用。

Map<Integer, Integer> map = newHashMap<Integer, Integer>();

for(Map.Entry<Integer, Integer> entry : map.entrySet()) {

System.out.println("Key = "+ entry.getKey() + ", Value = "+ entry.getValue());

}

2、在for-each循環中遍歷keys或values。

如果只需要map中的鍵或者值,你可以通過keySet或values來實現遍歷,而不是用entrySet。

Map<Integer, Integer> map = newHashMap<Integer, Integer>();

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

System.out.println("Key = "+ key);

}

for(Integer value : map.values()) {

System.out.println("Value = "+ value);

}

該方法比entrySet遍歷在性能上稍好(快了10%),而且代碼更加干凈。

3、使用Iterator遍歷

使用泛型:

Map<Integer, Integer> map = newHashMap<Integer, Integer>();

Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();

while(entries.hasNext()) {

Map.Entry<Integer, Integer> entry = entries.next();

System.out.println("Key = "+ entry.getKey() + ", Value = "+ entry.getValue());

}

不使用泛型:

Map map = newHashMap();

Iterator entries = map.entrySet().iterator();

while(entries.hasNext()) {

Map.Entry entry = (Map.Entry) entries.next();

Integer key = (Integer)entry.getKey();

Integer value = (Integer)entry.getValue();

System.out.println("Key = "+ key + ", Value = "+ value);

}

4、通過鍵找值遍歷(效率低)

Map<Integer, Integer> map = newHashMap<Integer, Integer>();

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

Integer value = map.get(key);

System.out.println("Key = "+ key + ", Value = "+ value);

}

假設Map中的鍵值對為1=>11,2=>22,3=>33,現用方法1來遍歷Map代碼和調試結果如下:

(1)javaiterator遍歷擴展閱讀:

1、HashMap的重要參數

HashMap 的實例有兩個參數影響其性能:初始容量 和載入因子。容量是哈希表中桶的數量,初始容量只是哈希表在創建時的容量。

載入因子 是哈希表在其容量自動增加之前可以達到多滿的一種尺度。當哈希表中的條目數超出了載入因子與當前容量的乘積時,則要對該哈希表進行 rehash 操作(即重建內部數據結構),從而哈希表將具有大約兩倍的桶數。

在Java編程語言中,載入因子默認值為0.75,默認哈希表元為101。

2、HashMap的同步機制

注意,此實現不是同步的。 如果多個線程同時訪問一個哈希映射,而其中至少一個線程從結構上修改了該映射,則它必須保持外部同步。

(結構上的修改是指添加或刪除一個或多個映射關系的任何操作;以防止對映射進行意外的非同步訪問,如下:

Map m = Collections.synchronizedMap(new HashMap(...));

⑵ List逆向遍歷、反向遍歷--Iterator詳解

在使用java集合的時候,都需要使用Iterator。但是java集合中還有一個迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的時候可以使用。這兩種迭代器有什麼區別呢?下面我們詳細分析。這里有一點需要明確的時候,迭代器指向的位置是元素之前的位置,如下圖所示:

這里假設集合List由四個元素List1、List2、List3和List4組成,當使用語句Iterator it = List.Iterator()時,迭代器it指向的位置是上圖中Iterator1指向的位置,當執行語句it.next()之後,迭代器指向的位置後移到上圖Iterator2所指向的位置。

首先看一下Iterator和ListIterator迭代器的方法有哪些。

都是迭代器,當需要對集合中元素進行遍歷不需要干涉其遍歷過程時,這兩種迭代器都可以使用。

搞定,溜了溜了~

⑶ java iterator循環遍歷集合(比如HashSet)的原理

如果你用的是eclipse,按住ctrl鍵,滑鼠左鍵點next()方法就能看到了,然後關聯JDK源碼就可以了

⑷ JAVA集合 使用Iterator遍歷員工集合,列印員工姓名以及性別

for,while是一樣的,形式上的不同
foreach,Iterator也是一樣的,形式上的不同
性能肯定是用迭代器的好一些。迭代器能直接訪問集合內部元素。而且有的集合沒有索引,沒法用for來遍歷,只有用迭代器。

⑸ JAVA中Iterator的具體作用

你說的沒有錯,iterator有hasNext()方法,返回是否還有沒有訪問的元素,next()則是返回下一個元素,這樣對於需要遍歷的地方,你就不需要知道元素的個數了.
而且iterator支持泛型,如
ArrayList<String> list=new ArrayList<String> ();
list.add("I");
list.add("Love");
list.add("You");
//注意對list修改完後,再取迭代器。不然會引發
//迭代器
Iterator<String> iter=list.iterator();

while(iter.hasNext())
System.out.println(iter.next()); //next()取得直接是String類型,不需要類型轉換了。(JDK1.5以上)
//ArrayList實現了Iterable介面,因此可以用for-each循環遍歷(JDK1.5以上)
for(String str:list)
System.out.println(str);

-------
你把它理解成數據結構中鏈表的那個next,就是一個線索。把容器中的各個元素穿起來。
你自己的類型也可以實現iterable介面,就可以迭代了。也可以用
foreach循環遍歷了。

⑹ JAVA Set Iterator遍歷的順序是怎麼樣的

可以用java.util.LinkedHashMap 就是按加入時的順序遍歷了。
類似的還有 java.util.LinkedHashSet

閱讀全文

與javaiterator遍歷相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:142
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:736
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163