map的遍历 以及 集合向数组的转换

<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) ;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值