<pre name="code" class="java">
package com.example.main;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class Main {
private static Map<String, String> map = new HashMap<String, String>();
/**
* @param args
*/
public static void main(String[] args) {
map.put("孙zhen", "大三");
map.put("小梁", "大二");
map.put("王亮", "大一");
map.put("张舒", "大四");
for (String grade : map.values()) { // 舍弃key 只要value值
System.out.println("value" + grade);
}
System.out.println("********************");
Set<String> set = map.keySet(); // key的set ,当然可以根据key来从map中取value
for(String key : set){
System.out.println("key是" + key);
}
System.out.println("********************");
Set<Entry<String, String>> set2=map.entrySet(); // entry的set entry 中包括key和value,注意形式
for (Entry<String, String> entry: set2) {
System.out.println(entry);
System.out.println(entry.getKey() + "," + entry.getValue());
}
System.out.println(map.values().toArray(new String[set.size()])); // 调用toArray 并指明一个object具体的
System.out.println(set.toArray(new String[set.size()]));
}
}
下面是运行结果:
value大三
value大一
value大二
value大四
********************
key是孙zhen
key是王亮
key是小梁
key是张舒
********************
孙zhen=大三
孙zhen,大三
王亮=大一
王亮,大一
小梁=大二
小梁,大二
张舒=大四
张舒,大四
[Ljava.lang.String;@47ca3f82
[Ljava.lang.String;@2f0f94a0
通过这个例子,你应该明白 map的遍历方式 、 entry的形式 、集合向数组的转换。
总的来说:比较好的性能是这些,并不是那种 先或得Iterator 然后 next()类的方法调用来遍历map。
方法一:忽略了key 直接获取其中的values
如
for( String values : map.values() ) {
}
此遍历是直接调用values()方法,返回一个集合collection。这个集合a collection of the values contained in this map.
The collection supports remove, removeAll, retainAll and clear operations, and it does not support add or addAll operations.
由于这个方法不是synchironization 执行的,所以如果是多个调用同时发生,返回的是多个collection。
方法二:EntrySet
for ( Entry<String , String> entry : map.entrySet() ) {
key = entry.getKey() ;
value = entry.getaValue() ;
}
方法三:KeySet
for( String key : map.keySet() ) {
value = map.get(key) ;
}