增強型for迴圈與Map集合的遍歷
阿新 • • 發佈:2019-01-10
Map介面的遍歷有以下幾種方法:
|
關於增強型for迴圈
語法格式:
for(集合內儲存型別 變數名 : 集合變數名)
舉例:
List<String> list = new ArrayList< String>();
list.add("wang");
list.add("hong");
for(String str : list)
System.out.println(str);
列印的結果是list集合中的資料
增強型for迴圈使用須知:
- 增強for迴圈只能用在陣列或實現Interable介面的集合類上
- 如果遍歷一個空的Map物件,for-each迴圈將丟擲NullPointerException異常
- 增強for迴圈和iterator遍歷的效果是一樣的,也就說增強for迴圈的內部也就是呼叫iteratoer實現的。但是增強for迴圈有些缺點,例如不能在增強迴圈裡動態的刪除集合內容。不能獲取下標等
- 增強型for迴圈只適合取資料,不會更改資料,如對更改資料有要求需要使用傳統for迴圈方式
關於Map集合的遍歷
Map集合沒有實現Interable介面,因此無法直接使用增強for迴圈,需要轉成相應的set集合,Map集合無法直接迭代
Map集合遍歷的傳統方式:
第一種方式:迭代
1.使用keySet()迭代
@Test
public void test() {
Map map = new HashMap();
map.put("1","aaa");
map.put("2","bbb");
map.put("3","ccc");
//迭代遍歷Map集合的第一種方式
Set set = map.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
String key = (String) it.next();
String value = (String) map.get(key);
System.out.println(key + "=" + value);
}
}
同時應注意,若使用HashMap()方法,在儲存資料的時候採用雜湊演算法進行儲存,因此在取資料時的列印輸出不會按照存入的順序,若對順序有要求,可以採用LinkedHashMap方法,採用線性連結串列儲存資料。
2.使用entrySet()迭代
Entry是一個鍵值對物件,包含key和value兩個屬性,可以通過getKey()獲得key值,也可以通過getValue()獲得value值。entrySet實現了Set介面,可以用以遍歷Map物件。
@Test
public void test() {
Map map = new HashMap();
map.put("1","aaa");
map.put("2","bbb");
map.put("3","ccc");
//迭代遍歷Map集合的第二種方式
Set set = map.entrySet();
Iterator it = set.iterator();
while(it.hasNext()){
Entry entry = (Entry) it.next();
String key = (String) entry.getKey();
String value = (String) entry.getValue();
System.out.println(key + "=" + value);
}
}
第二種方式:增強型for迴圈
1.for迴圈&keySet()
@Test
public void test() {
Map map = new HashMap();
map.put("1","aaa");
map.put("2","bbb");
map.put("3","ccc");
//增強型for迴圈遍歷Map集合
for(Object obj : map.keySet()) {
String key = (String) obj;//取到每一個key值
String value = (String) map.get(key);
System.out.println(key + "=" + value);
}
}
2.for迴圈&entrySet()
@Test
public void test() {
Map map = new HashMap();
map.put("1","aaa");
map.put("2","bbb");
map.put("3","ccc");
//增強型for迴圈遍歷Map集合
for(Object obj : map.entrySet()) {
Map.Entry entry = (Map.Entry) obj;
String key = (String) entry.getKey();
String value = (String) entry.getValue();
System.out.println(key + "=" + value);
}
}