Java 学习——Map

前言

最近正在做的高校云平台项目中接触Map比较多,关于map的使用不是很熟悉,所以在此将map的几个方法再次学习下。

Map与Collection

提到Map集合接口就不能不提到Collection集合接口,map和Collection都是集合接口,Collection中包含了我们经常用的list和set子接口;而Map是与Collection处于平级的地位;Collection中存储的是一组对象,而Map存储的是一个键值对(key/value).

Map

在Map对象中,Key是唯一的,不可重复的。null也可以作为key,但这样的key只能有一个;但是可以有一个或多个key所对应的value都是null。

当我们想判断map中是否存在某个key时,可以用方法containsKey()来判断,同样想判断是否存在value时用方法containsValue()来判断;代码如下:

<pre name="code" class="java">public static void main(String[] args) {
		Map< Serializable, Serializable > map = new HashMap< Serializable, Serializable >();
		map.put(null,null);
		map.put("a", "1");
		map.put("b", "2");
		map.put("c", "3");
		if (map.containsKey("a")) {
			System.out.println("Key=Ture");
			if (map.containsValue("1")) {
				System.out.println("value=Ture");
			}
		}

	}

执行结果是:

Key=Ture  value=Ture

Map中提供了一些常用的方法来取出Map中的数据,用的比较多的比如:entrySet()方法,;entrySet()的返回值是个Set集合,此集合的类型为Map.Entry。Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法,代码如下:

public static void main(String[] args) {
	Map< Serializable, Serializable > map = new HashMap< Serializable, Serializable >();
	map.put(null,null);
	map.put("a", "1");
	map.put("b", "2");
	map.put("c", "3");
	Set<Entry<Serializable, Serializable>> entrySet= map.entrySet();
	System.out.println("entrySet="+entrySet);
	for (Entry key : entrySet) {
		System.out.println("key.getKey="+key.getKey()+" key.getValue()="+ key.getValue());
	}	

}

执行的结果如下:

entrySet=[null=null, a=1, b=2, c=3]

key.getKey=null  key.getValue()=null

key.getKey=a  key.getValue()=1

key.getKey=b  key.getValue()=2

key.getKey=c  key.getValue()=3

接下来要说的是keySet方法,keySet()方法返回值是Map中key值的集合,然后可以通过get(key)遍历来获取value值,代码如下:

public static void main(String[] args) {
		Map< Serializable, Serializable > map = new HashMap< Serializable, Serializable >();
		map.put(null,null);
		map.put("a", "1");
		map.put("b", "2");
		map.put("c", "3");

		Set keySet= map.keySet();
		System.out.println("keySet="+keySet);
		for (Iterator iterator = keySet.iterator(); iterator.hasNext();) {
			Object key = (Object) iterator.next();
			Object value = map.get(key);
			System.out.println("key = "+key+ " value="+value);
		}
	}

执行的结果如下:

keySet=[null, a, b,c]

key = null  value=null

key = a  value=1

key = b  value=2

key = c  value=3

最后要说的是,map还有一个values()方法,values()方法返回值是Map中value值的集合,通过遍历可以取出value的值,代码如下:

public static void main(String[] args) {
	Map<Serializable, Serializable> map = new HashMap<Serializable, Serializable>();
	map.put(null, null);
	map.put("a", "1");
	map.put("b", "2");
	map.put("c", "3");

	Collection c = map.values();
	System.out.println("map.values()=" + map.values());
	for (Iterator iterator = c.iterator(); iterator.hasNext();) {
		Object value = (Object) iterator.next();
		System.out.println("value="+value);
	}

}

代码执行结果如下:

map.values()=[null,1, 2, 3]

value=null

value=1

value=2

value=3

小结

本文主要介绍了Map集合中entrySet()方法与keySet()、value()方法的使用,其中前两者取出的都是key和value的映射关系,只有最后的values取出的是集合中所以的值,没有键,也就没有了对应的映射关系。

时间: 2024-08-09 02:06:58

Java 学习——Map的相关文章

JAVA学习第三十九课(常用对象API)- 集合框架(七)— Map集合及其子类对象

一.Map集合常见子类 HashTable:内部结构是哈希表,同步,此实现提供所有可选的映射操作,不允许使用 null 值和 null 键 (HashTable下有子类Properties,使用频率非常高,用来存储键值对型的配置文件信息和IO技术相结合) HashMap:内部结构是哈希表,不同步,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键. TreeMap:内部结构是二叉树,不同步,可以对Map集合中的键进行排序. 二.HashMap演示 import java.ut

Java集合Map接口与Map.Entry学习

Java集合Map接口与Map.Entry学习 Map接口不是Collection接口的继承.Map接口用于维护键/值对(key/value pairs).该接口描述了从不重复的键到值的映射. (1) 添加.删除操作: Object put(Object key, Object value): 将互相关联的一个关键字与一个值放入该映像.如果该关键字已经存在,那么与此关键字相关的新值将取代旧值.方法返回关键字的旧值,如果关键字原先并不存在,则返回null Object remove(Object

JAVA学习第四十课(常用对象API)- Map集合练习

一.LinkedHashMap集合 import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; public class Main { public static void main(String[] args) { HashMap<Integer, String> hm = new LinkedHashMap<Integer,Stri

JAVA学习第三十八课(常用对象API)- 集合框架(六)— Map集合及其常用方法

一.Map集合特点 Map集合(双列集合)一次添加一对元素,Collection集合(单列集合)一次添加一个元素 接口 Map<K,V>,实际上存储的是键值对 特点: 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 也就是说Map中必须保证键的唯一性 二.常用方法 1.添加:value = put(key,value);返回前一个和key相关联的值,如果没有返回null 2.删除:void clear();把Map中的所有映射关系清除 value remove(ke

java学习笔记—集合之Map集合

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 12.0px Times } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Songti SC" } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times } p.p4 { margin: 0.0px 0.0px 0.0px 0.0

Java学习总结(六)——(Map集合,Comparator接口,异常等)

一.Comparator接口 *Comparator接口的使用 (1)使用Comparable接口定义排序顺序有局限性:实现此接口的类只能按compareTo()定义的这一种方式排序. (2)如果同一类对象要有多种排序方式,应该为该类定义不同的比较器(实现Comparator接口的类)TreeSet有一个构造方法允许给定比较器,它就会根据给定的比较器对元素进行排序. (3)Comparator接口中的比较方法 示例:public int compare(Object o1, Object o2)

Java学习笔记32(集合框架六:Map接口)

Map接口与Collection不同: Collection中的集合元素是孤立的,可理解为单身,是一个一个存进去的,称为单列集合 Map中的集合元素是成对存在的,可理解为夫妻,是一对一对存进去的,称为双列集合 Map中存入的是:键值对,键不可以重复,值可以重复 Map接口中的常用集合: 1.HashMap:哈希表的存储结构,但是无法保证存取顺序 2.LinkedHashMap:存储数据采用的是哈希表和链表,可以有顺序 Map接口的常用方法: 示例: package demo; import ja

Java学习:集合双列Map

数据结构 数据结构: 数据结构_栈:先进后出 入口和出口在同一侧 数据结构_队列:先进先出 入口和出口在集合的两侧 数据结构_数组: 查询快:数组的地址是连续的,我们通过数组的首地址可以找到数组,通过数组的索引可以快速的查找某一个元素. 增删慢:数组的长度是固定的,我们想要增加/删除一个元素,必须创建一个新数组,把原数组的数据复制过来 例: int[] arr = new int[]{1,2,3,4}; 要把数组索引是3的元素删除 必须创建一个新的数组,长度是原数组的长度-1 把原数组的其它元素

2016最新Java学习计划

一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码        第一阶段 Java基础 入门 学习周期: 35天 学完后目标: 1.可进行小型应用程序开发 2.对数据库进行基本的增删改查管理 市场价值:¥5000 计算机基础知识 计算机基础.DOS常用命令.Java概述.JDK环境安装配置.环境变量配置.Java程序入门 1.2015年Java基础视频-深入浅出精华版(强烈推荐) 2.历经5年锤炼(适合初学者入