Map集合(字典,映射:key-value)——HashMap

Map:用于保存具有映射关系的数据,因此Map集合里有两组值:key和value(key不允许重复,同一个Map里任何两个key通过equals方法比较都返回false)(key和value都可以是任何类型的引用数据

Map接口下有:
HashMap、LinkedHashMap、SortedMap(接口)、TreeMap、EnumMap等子接口和实现类

Map与List的相同点:元素之间可重复,可以根据索引来查找;
Map与List的不同点:Map索引key不再使用整数值,而是以另一个对象作为索引。——有时,Map称为**“字典”**或关联数组。

一、HashMap实现类

keySet: 把Map集合中所有的key放在一起,它们就组成了一个Set集合(没有顺序,不可重复)——>keySet()方法,输出所有key

Map的遍历通过遍历key来实现遍历所有的key-value对

import java.util.*;
public class  MapTest
{
	public static void main(String[] args) 
	{
		var map = new HashMap();//HashMap实现类
		      //key-value
		map.put("你好",10);
		map.put("我好",30);
		map.put("他好",58);
		map.put("大家好",58);//value可重复
		//输出Map集合包含的key-value对
		System.out.println(map);

		//用新的value覆盖原有的value,则put()方法会返回被覆盖的value
		System.out.println(map.put("你好",90));//输出10

		//判断是否包含指定的key或value
		System.out.println("是否包含值为:他好 的key?"+ map.containsKey("他好"));
		System.out.println("是否包含值为:58 的value?"+ map.containsValue(58));
		
		//通过foreach循环遍历出所有key。只能通过遍历key来实现遍历key-value对
		//而一般的对象可以直接遍历对象本身,如:for(var a: apple)
		for(var key:map.keySet())//keySet方法:返回Map中所有key组成的set集合
		{
			System.out.println(key +"——>"+map.get(key));
			//get(key)用于返回指定key所对应的value
		}

		//根据key来删除key-value对
		map.remove("大家好");
		System.out.println(map);
	}
}

在这里插入图片描述

二、LinkedHashMap实现类

是HashMap的一个子类,使用双向链表来维护key-value对的顺序。
功能:LinkedHashMap可以记住key-value的添加顺序,遍历时会按照顺序输出
而HashMap无法记住顺序,是把key放在一个Set集合中。

import java.util.*;
public class LinkedHashMapTest
{
	public static void main(String[] args) 
	{
		var scores = new LinkedHashMap();
		var s = new HashMap();
		scores.put("语文",80);
		scores.put("数学",90);
		scores.put("英语",60);

		s.put("语文",80);
		s.put("数学",90);
		s.put("英语",60);

		//遍历方法一:通过forEach()方法遍历scores里的所有key-value对
		System.out.println("LinkedHashMap:");
		scores.forEach((key,value) -> System.out.println(key + "-->" + value));
		System.out.println("HashMap:");
		s.forEach((key,value) -> System.out.println(key + "-->" + value));

		//遍历方法二:通过foreach
		System.out.println("第二种遍历方法:");
		System.out.println("LinkedHashMap:");
		for(var key:scores.keySet())//keySet方法:返回Map中所有key组成的set集合
		{
			System.out.println(key +"——>"+scores.get(key));
			//get(key)用于返回指定key所对应的value
		}
		System.out.println("HashMap:");
		for(var key:s.keySet())//keySet方法:返回Map中所有key组成的set集合
		{
			System.out.println(key +"——>"+s.get(key));
			//get(key)用于返回指定key所对应的value
		}
	}
}

在这里插入图片描述

发布了39 篇原创文章 · 获赞 2 · 访问量 918

猜你喜欢

转载自blog.csdn.net/qq_38596491/article/details/104234819