天天看點

map的周遊

keyset與entryset的比較:

Map<String,String> map=new HashMap<String, String>();

map.put("1","a");

map.put("2","b");

map.put("3","c");

map.put("4","d");

map.put("5","e");

map.put("6","f");

map.put("7","g");

map.put("8","h");

map.put("9","j");

Set<String> ls=map.keySet();//這裡是生成鍵的視圖  如果要讀取還必須get一次

for(String l:ls)

System.out.println("k="+l+" v="+map.get(l));

Set<Map.Entry<String, String>> lv=map.entrySet();//這裡是生成鍵和映射關系的視圖    不需要再get一次。是以效率明顯快

for(Map.Entry<String, String> l:lv)

System.out.println(l.getKey()+"-----"+l.getValue());

}

關于Java集合的Map集合的周遊  

普通Java代碼:

map.keySet();鍵集合 

map.values();值集合 

map.entrySet();鍵值集合

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

public class MapTest {

public static void main(String[] args) {

Map map=new HashMap();

map.put("a","1");

map.put("b","2");

map.put("c","3");

//for循環方式——周遊鍵,通過鍵取值

//map.keySet();鍵集合

//map.values();值集合

//map.entrySet();鍵值集合

//最常用的方法

Set set = map.keySet();

for(Object key : set){

System.out.println("鍵:" + key +" 值:" + map.get(key));

}

System.out.println("--------------");

it.hasNext()分為兩個:it 和  .hasNext();      
1. it:這裡應該是上文定義了一個可疊代對象      
2. .hasNext(): 檢查序列中是否還有元素      
3. 其他Iterator用法。      
1)使用方法 iterator()要求容器傳回一個 Iterator。第一次調用Iterator 的next()方法時,它傳回序列的第一個元素。      
2)使用next()獲得序列中的下一個元素。      
3)使用hasNext()檢查序列中是否還有元素。      
4)使用remove()将上一次傳回的元素從疊代器中移除。      

//Iterator方式——周遊鍵集合

Iterator it = map.keySet().iterator();

while(it.hasNext()){

System.out.println("鍵:" + it.next());

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

while(it2.hasNext()){

System.out.println("鍵:" + it2.next());

}

結果:

鍵:b? 值:2 

鍵:c? 值:3 

鍵:a? 值:1 

-------------- 

鍵:b 

鍵:c 

鍵:a 

鍵:b=2 

鍵:c=3 

鍵:a=1

在頁面上使用EL表達式周遊普通Map集合

<%      
Map map=new HashMap();      
map.put("A", "1");      
map.put("B", "2");      
map.put("C", "3");      
pageContext.setAttribute("map",map);      
%>      
<c:forEach items="${map}" var="m">      
鍵:${m.key}      
值:${m.value}      
</c:forEach>      

使用EL表達式周遊Map集合(值存放的是對象)

<%

Person p=new Person();

p.setAddress("aa");

p.setName("aa");

Person p2=new Person();

p2.setAddress("bb");

p2.setName("bb");

Person p3=new Person();

p3.setAddress("cc");

p3.setName("cc");

Map map=new HashMap();

map.put("a", p);

map.put("b", p2);

map.put("c", p3);

pageContext.setAttribute("map",map);

%>

<c:forEach items="${map}" var="m">

${m.key}

${m.value.name} //m.value取得的是對象的記憶體位址,是以可以直接用m.value.name(name為Person對象的屬性)

</c:forEach>