Java集合之map 集合使用

Java集合中的四种遍历方式:

package cn.javabs.demo;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
 * Map集合的四种运用方法
 * @author MrYang
 */
public class MapDemo {
	
	public static void main(String[] args) 
	{
		 Map<Integer, String> map = new HashMap<Integer, String>();
		 map.put(1, "Java");
		 map.put(2, "javaWeb");
		 map.put(3, "JavaEe");
		 map.put(4, "JavaEe");
		 map.put(4, "JavaEe");// 这里有两个4,且内容重复  会有一个进行舍弃
		 System.out.println(map.size());
		 // 第一种:
		 /*
		  * Set<Integer> set = map.keySet(); //得到所有key的集合
		  * 
		  * for (Integer it : set)
                  *  { 
                  *	String str = map.get(it);
		  *     System.out.println(it + "     " + str); 
		  *   }
		  */
		  System.out.println("第一种:通过Map.keySet遍历key和value:");
		  for (Integer it : map.keySet()) 
  		  {
		      //map.keySet()返回的是所有key的值
		      String str = map.get(it);//得到每个key多对用value的值
		      System.out.println(it + "     " + str);
		  }
		  // 第二种:
		  System.out.println("第二种:通过Map.entrySet使用iterator遍历key和value:");
		  Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
		  while (it.hasNext()) {
		       Map.Entry<Integer, String> entry = it.next();
		         System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
		  }
		  // 第三种:推荐,尤其是容量大时
		  System.out.println("第三种:通过Map.entrySet遍历key和value");
		  for (Map.Entry<Integer, String> entry : map.entrySet()) 
		  {
		      //Map.entry<Integer,String> 映射项(键-值对)  有几个方法:用上面的名字entry
		      //entry.getKey() ;entry.getValue(); entry.setValue();
		      //map.entrySet()  返回此映射中包含的映射关系的 Set视图。
		      System.out.println("key= " + entry.getKey() + " and value= "+ entry.getValue());
		  }
		  // 第四种:
		  System.out.println("第四种:通过Map.values()遍历所有的value,但不能遍历key");
		  for (String v : map.values()) 
		  {
		      System.out.println("value= " + v);
		  }
		}
	}

Java集合中根据值取键【根据value取key值】

注意:
	在Java中,一个Key 是对应一个Value,但一个Value却可以对应多个Key。
	举个栗子:
		我的年龄是25岁,我的学号也是25号,那么根据25 找到的不一定是年龄age或者是学号sid。所以根据value取key值,值有很多个。
package cn.javabs.demo;

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
/**
 * 根据value取key
 * @author MrYang
 */
public class MapDemo 
{
	public static void main(String[] args) 
	{
		 Map<String, Object> map = new LinkedHashMap<String, Object>();  
	        map.put("deviceName","computer");  //  设备名称
	        map.put("deviceModel", "c1011");   //  设备型号
	        map.put("deviceSize", "22.5");     //  设备尺寸
	        map.put("deviceColor", "Black");   //  设备颜色
	}
	
	
	@SuppressWarnings("rawtypes")
	public static  String  getKeyByValue(Map map ,Object value)
	{
		String keys = "";//先定义一个keys  不止一个key
		Iterator it = map.entrySet().iterator();//获取迭代器对象it
		while (it.hasNext())
		{
			Map.Entry  entry = (Entry) it.next();
			Object obj = entry.getValue();
			if(obj != null && obj.equals(value))
			{
				keys = (String) entry.getKey();
			}
		}
		return keys;
	}
		
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏从零开始学 Web 前端

07 - JavaSE之容器

Collection 接口的子接口分为:Set接口(包含 HashSet类) + List接口(包含LinkedList 类和 ArrayLis t类) Ma...

962
来自专栏算法修养

2016天梯模拟赛 进阶题解

L2-005 集合相似度 题目链接: https://www.patest.cn/contests/gplt/L2-005 题目的意思是要求两个集合的交集中...

4279
来自专栏电光石火

Java遍历Map对象的四种方式

关于java中遍历map具体哪四种方式,请看下文详解吧。 方式一 这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。 Map<I...

39810
来自专栏Java大联盟

Java面试手册:集合框架

2253
来自专栏LinkedBear的个人空间

唠唠SE的集合-01——Collection接口

当集合中存储的对象类型不同时,那么会导致程序在运行的时候的转型异常,所以jdk1.5加入了泛型机制。

682
来自专栏武培轩的专栏

剑指Offer-和为S的两个数字

题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每...

3214
来自专栏章鱼的慢慢技术路

顺序表示的线性表——顺序表

2224
来自专栏电光石火

HashSet集合中hashCode及equals方法详解

首先我们熟知HashSet集合中元素存储的特点: 1)不允许元素重复; 2)不会记录元素添加的先后顺序; 3)HashSet中比较两个对象是否相同...

1829
来自专栏小怪聊职场

Java|Map、List与Set的区别

41712
来自专栏Android群英传

深入Java源码解析容器类List、Set、Map

2043

扫码关注云+社区

领取腾讯云代金券