ava:Map借口及其子类HashMap三

ava:Map借口及其子类HashMap三

HashMap常用子类(异步非安全线程,性能高; Hashtable:同步的安全线程,性能低)

 

map(HashMap)中的key,value可以通过 Set<E>,或者Conllection<E>来接收.

Map<String,Integer> allMap = new HashMap<String, Integer>();
		allMap.put("zhangsan", 1);
		allMap.put("zhangsan", 2);
		allMap.put("lisi", 3);
		allMap.put("tianqi", 4);
		
		//Integer value = allMap.get("zhangsan");
		//System.out.println(value);
		
		Collection<Integer> keys = allMap.values();
		Iterator<Integer> iter = keys.iterator();
		while(iter.hasNext())
		{
			Integer str = iter.next();
			System.out.println( str + "、" );
		}
		

  

结果:

3、
2、
4、

  

 

注意事项:

Map不能直接使用Iterator类输出

在集合的标准操作中所有的集合内容最好使用Iterator进行输出,但在Map接口中并没有明确的定义出这样的操作。如果没有的话,则必须深入了解Map的机制。

在Map中虽然是以一对值得形式出现的,可是真正的保存的还是一个单独的对象,即:程序key->alue的存放在一个对象之中,之后将对象加入到集合里。

Map.Entry,Map实体,从定义格式上可以发现,此接口属于STATIC静态声明的接口。而且是一个内部接口。

 

对于Map和Map.Entry的关系,如下图:

MAP.Entry [ 一组对象数据]

Map.Entry [ 一组对象数据]

Map.Entry [一组对象数据]

.......                                         <-------------------- 增加元素 Map.Entry[ key=>value 一组对象数据]

所以:下面就可以给出Map接口使用Iterator输出的标准操作:

1.通过Map接口中的:Set<Map.Entry<K, V>> entrySet()方法取得Set集合

2.通过Set接口,为Iterator进行初始化操作

3.通过Iterator取得每一个Map.Entry

4.通过Map.Entry将KEY与VALUE分离。

例子:

Map<String, Integer> allSet = new HashMap<String, Integer>();
		allSet.put("zhangsan", 1);
		allSet.put("zhangsan", 2);
		allSet.put("lisi", 3);
		allSet.put("wangwu", 4);
		
		Set<Map.Entry<String,Integer>> allList = allSet.entrySet();
		Iterator<Map.Entry<String,Integer>> iter = allList.iterator();
		while(iter.hasNext())
		{
			Map.Entry<String, Integer> map = iter.next();
			System.out.println( map.getKey() + "-->" + map.getValue()  );
			
		}

  

Set<Map.Entry<String,Integer>> allList = allSet.entrySet();
Iterator<Map.Entry<String,Integer>> iter = allList.iterator();
while(iter.hasNext())
{
	Map.Entry<String, Integer> map = iter.next();
	System.out.println( map.getKey() + "-->" + map.getValue()  );
			
}

结果:

lisi-->3
zhangsan-->2
wangwu-->4

  

或者Foreach循环:

	Map<String, Integer> allSet = new HashMap<String, Integer>();
		allSet.put("zhangsan", 1);
		allSet.put("zhangsan", 2);
		allSet.put("lisi", 3);
		allSet.put("wangwu", 4);
		

		//或者
		for(Map.Entry<String, Integer> map: allSet.entrySet())
		{
			System.out.println( map.getKey() + "-->" + map.getValue());
		}

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值