Java基础之Map集合

Map集合:

1.Map集合与Collection集合的区别:

1.Collection中的集合,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储。

2.Map中的集合1,元素是成对存在的,每个元素由键合值两个部分组成,通过键可以找到对应的值。

3.Collection中的集合称为单列集合,而Map中的集合称为双列集合。

4.Map中的集合不能包含重复的键,但可以有重复值;每个键只能有一个值。

2.Map中常用的子类:

。HashMap:存储数据采用的哈希表结构,元素的存储顺序不能保持一致。由于要保证键的唯一,不重复,所以要重写hashCode()方法和equal()方法。

。LinkHashMap:通过链表结构可以保证元素的存储顺序一致,同样也要重写hashCode()方法和equals()方法。

3.Map接口中的常用方法:

public v put(K key,V value):  把指定的键与指定的值添加到Map集合中。

public v remove(Object key):  把指定的键对应的元素在对应的集合中删除,返回的是被删除的元素的值

public V get(Object key)  :根据指定的键在Map集合中获取对应的值

public boolean containsKey(Object key)  :判断当前对象是否存在于集合中

public Set<K> keySet()  :获取Map集合中的所有键,存储到set集合中

public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。

  Map接口的方法演示:

import java.util.HashMap;

public class MapDemo {
	public static void main(String[] args) {
		HashMap<String,String> hashMap = new HashMap<String,String>();
		hashMap.put("刀锋之影", "泰隆");
		hashMap.put("刀锋意志", "艾瑞莉娅");
		hashMap.put("放逐之刃", "瑞文");
		hashMap.put("疾风剑豪", "亚索");
		
		System.out.println(hashMap);
		System.out.println("--------------------------------");
		
		
		System.out.println(hashMap.remove("放逐之刃"));
		System.out.println(hashMap);
		System.out.println("--------------------------------");
	
		System.out.println(hashMap.get("疾风剑豪"));
	}
}

打印结果:
{刀锋意志=艾瑞莉娅, 疾风剑豪=亚索, 放逐之刃=瑞文, 刀锋之影=泰隆}
--------------------------------
瑞文
{刀锋意志=艾瑞莉娅, 疾风剑豪=亚索, 刀锋之影=泰隆}
--------------------------------
亚索

注:使用put方法时,若指定的键(key)在集合中没有,则新增;若指定的键在集合中存在,把指定键对应的值,替换成对应的新值。

4.Map集合遍历键找值得方式:

键找值方式:即通过元素中的键,获取键所对应的值

分析步骤:

  1. 获取Map中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键。方法提示:keyset()
  2. 遍历键的Set集合,得到每一个键。
  3. 根据键,获取键所对应的值。方法提示:get(K key)

代码演示:

import java.util.HashMap;
import java.util.Set;

public class MapDemo {
	public static void main(String[] args) {
		HashMap<String,String> hashMap = new HashMap<String,String>();
		hashMap.put("刀锋之影", "泰隆");
		hashMap.put("刀锋意志", "艾瑞莉娅");
		hashMap.put("放逐之刃", "瑞文");
		hashMap.put("疾风剑豪", "亚索");
		//获取所有键, 获取键值
		Set<String> keySet = hashMap.keySet();
		//获取对应的值
		for(String key : keySet) {
			System.out.println(key+":"+hashMap.get(key));
		}
    }
}


打印结果:
刀锋意志:艾瑞莉娅
疾风剑豪:亚索
放逐之刃:瑞文
刀锋之影:泰隆   

5.Entry键值对对象

我们已经知道,Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在在Map中是一一对应关系,这一对对象又称做Map中的一个Entry(项)Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。

既然Entry表示了一对键和值,那么也同样提供了获取对应键和对应值得方法:

  • public K getKey():获取Entry对象中的键。
  • public V getValue():获取Entry对象中的值。

在Map集合中也提供了获取所有Entry对象的方法:

  • public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。

6.Map集合遍历键值对方式:

键值对方式:即通过集合中每个键值对(Entry)对象,获取键值对(Entry)对象中的键与值。

操作步骤:

  1. 获取Map集合中,所有的键值对(Entry)对象,以Set集合形式返回。方法提示:entrySet()
  2. 遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象。
  3. 通过键值对(Entry)对象,获取Entry对象中的键与值。 方法提示:getkey() getValue()

案例演示:

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;

public class MapDemo {
	public static void main(String[] args) {
		HashMap<String,String> hashMap = new HashMap<String,String>();
		hashMap.put("刀锋之影", "泰隆");
		hashMap.put("刀锋意志", "艾瑞莉娅");
		hashMap.put("放逐之刃", "瑞文");
		hashMap.put("疾风剑豪", "亚索");
		//获取所有的 entry对象 entrySet
		Set<Entry<String,String>> entrySet = hashMap.entrySet();
		//遍历得到每一个entrySet对象
		for(Entry<String,String> entry : entrySet) {
			System.out.println(entry.getKey()+":"+entry.getValue());
		}
    }
}


打印结果:
刀锋意志:艾瑞莉娅
疾风剑豪:亚索
放逐之刃:瑞文
刀锋之影:泰隆

注:Map集合不能直接使用迭代器或者foreach进行遍历。但是转成Set之后就可以使用了。

猜你喜欢

转载自blog.csdn.net/XianYuZong/article/details/82114419