hpe实训课(Map相关内容)

Map接口:

Map是用于保存具有映射关系的数据(一组是key,一组是value)

1.它和Collection接口是一个平行关系
2.存放的数据是键值对(key-value)数据
* 	 ①.key:Map中的键 它是不能重复,底层实现是采用Set
* 	 ②.value:Map中的值 可以重复,底层实现是采用Collection(List)
* 	 ③.Map实际上是提供了一个Entry内部类里封装key-value
3.Map集合的优点
* 	 类似于字典一样通过key找到对应的value,使用这种映射关系方便查找数据。
4.Map中常用的方法
Object put(Object key,Object value):添加元素|修改元素 
Object remove(Object key):移除元素 删除一个key-value
void putAll(Map t):
void clear():清空元素

Object get(Object key):获取指定的value,如果没有找到对应的key则返回null
boolean containsKey(Object key):是否包含指定的key
boolean containsValue(Object value):是否包含指定的value
int size():集合的长度
boolean isEmpty():是否为空
boolean equals(Object obj)

Set keySet():返回Map所有key组成的集合Set
Collection values():返回Map所有的value组成的集合Collection
Set entrySet():返回Map中所有的键值对组成的Set集合(每个集合都是一个Entry对象)
5.内部类Map.Entry
 ①.Map中包含一个内部类Entry,它封装了一个键值对
 ②.常用方法
 	-- getKey():获取Entry中包含的key值
 	-- getValue():获取Entry中包含的value值
6.实现类
 ①.HashMap:主要实现类
 ②.LinkedHashMap:使用链表的方式来添加Map元素的顺序(迭代顺序和插入顺序是一致的)
 ③.TreeMap
 ④.Hashtable:线程安全的,不建议使用,不允许使用null作为key,value
 		-- Properties:通常来处理属性文件,键值对都是String类型

实现代码

@Test
	public void testMap() {
		Map map = new HashMap();
		// 添加元素(当向集合中添加相同的元素key相同时,保留的是后面的元素)
		map.put("A", 123);
		map.put("B", 456);
		map.put("c", null);
		map.put("B", 123);
		map.put(new Person("D", 20), 111);
		// 获取元素的个数
		System.out.println(map.size());
		System.out.println(map);
		
		// 移除元素
		map.remove("B");
		System.out.println(map);
		
		// 根据key更新value值
		map.put("c", 119);
		System.out.println(map);
		
		// 获取元素
		Object object = map.get("A");
		System.out.println(object);
		
		// 判断是否包含某个key值
		boolean isContainsKey = map.containsKey("c");
		System.out.println(isContainsKey);
		
		// 清空Map元素
		map.clear();
		System.out.println(map);
		// 判断Map是否为空
		boolean empty = map.isEmpty();
		System.out.println(empty);
	}
Map的遍历
 * 1.Map中的key是使用Set存储,不可重复
 * 2.Map中的value使用Collection来存放,可以重复
 * 3.一个键值对(key-value),就是一个Entry,Entry是使用Set来存放,也是不可重复。
 * 4.当向Map中添加元素时,会调用key所在类的equals()方法,判断两个key是否相同,如果相同,则添加后面的元素

实现代码

	@Test
	public void testMap2() {
		Map map = new HashMap();
		map.put("C罗", 35);
		map.put("梅西", 33);
		map.put("内马尔", 29);
		map.put(null, null);
		
		// 1.keySet()  遍历key的集合
		Set Set = map.keySet();
		for (Object obj : Set) {
			System.out.println(obj);
			
		}
		System.out.println("--------------------------------");
		
		// 2.values() 遍历values的集合
		Collection values = map.values();
		Iterator iterator = values.iterator();
		while (iterator.hasNext()) {
			System.out.println(iterator.next());
		}
		System.out.println("--------------------------------");
		
		// 3.entrySet() 遍历key-value
		// 方式一
		Set set1 = map.keySet();
		for (Object obj : set1) {
			// 得到key值
			Object key = obj;
			// 根据get(key)方法得到相应的value值
			Object value = map.get(key);
			System.out.println(key+"-"+value);
		}
		System.out.println("--------------------------------");
		
		// 方式二
		// Set entrySet = map.entrySet();
		for (Object object : map.entrySet()) {
			Entry entry = (Entry) object;
			// 通过entry调用getKey()方法得到key值
			Object key = entry.getKey();
			// 通过entry调用getValue()方法得到value值
			Object value = entry.getValue();
			System.out.println(key+"-"+value);
		}
		System.out.println("---------------------------------");
		
		// 方式三 通过forEach方法(JDK1.8的新特性)
		map.forEach((key,value) -> System.out.println(key+"-"+value));
	}
发布了30 篇原创文章 · 获赞 0 · 访问量 1952

猜你喜欢

转载自blog.csdn.net/qq_38499019/article/details/104447842
今日推荐