Map集合的知识点

List,Set,Map的区别

  1. List 和 Set 继承 Collection接口 Map 不继承 Collection 接口
  2. List 有序(记录存储顺序) 可重复 Set 无序,不可重复 Map 存储 k-v(键值对) 格式的集合

Map

Collection (单列集合,单身) 一个元素
Map(双列集合,情侣) 元素成对出现 ,每个元素由 两个部分组成
Map存储是 键值对
键 key 不可以重复
值 value 可以重复
经过查看API,发现Map也有很多实现类,常见4个实现类:
1> HashMap<K,V> :底层采用哈希表+链表+红黑树实现
2> Hashtable<K,V>
3> LinkedHashMap<K,V>:是HashMap的子类,在HashMap基础上确保了元素的链式存储记录存储顺序
4> TreeMap<K,V>:需要对存储的数据进行自定义排序
注意: Map有两个泛型 <K,V> 在使用的时候需要为它们指定数据类型 K,V 数据类型可以一样,也可以不一样

Map接口中常用的方法

V get(Object key) 根据key获取对应的值 
V put(K key, V value) 向map集合中存入值 
V remove(Object key) 根据key删除键值对 
default V replace(K key, V value) 使用新值替换指定key的值 
int size() map集合中键值对的个数 
boolean containsKey(Object key) 判断map中是否包含指定key 
boolean containsValue(Object value) 判断map集合中是否包含指定的值 
boolean isEmpty() 判断map是否为空集合,当前仅当 size()==0 
遍历map集合中数据(把map集合中数据输出) 
方式1: 先获取所有key,再调用get根据key获取值 
	Set<K> keySet() //这个方法就是获取map的所有key的值 
方式2: 直接获取键值对 
	Set<Map.Entry<K,V>> entrySet() // 在Map接口,有一个内部接口 Entry 代表就是键值对 
方式3: 不能获取key,只获取所有值的方法 
	Collection<V> values()

代码示例

//接口中不能创建对象所以用HashMap实现类
public class MapDemo { 
	public static void main(String[] args) { 
		Map<Integer, String> map = new HashMap<>(); 
		map.put(1, "松狮");
		map.put(2, "哈士奇"); 
		map.put(3, "泰迪"); // key重复的时候,后面key的值会覆盖掉前面相同key的值 
		map.put(2, "斗牛"); // 值可以重复 
		map.put(4, "泰迪"); 
		System.out.println(map); 
		// V get(Object key) 根据key获取对应的值 
		String v1 = map.get(3); 
		System.out.println(v1); 
		// key存在则返回具体的值,若key不存在返回null 
		// map.clear(); 清楚集合中所有键值对 
		// 把key为4的值修改称为萨摩耶 
		map.replace(4, "萨摩耶"); 
		System.out.println(map); 
		int size = map.size(); 
		System.out.println(size); 
		// 判断map集合中是否包含key为1的键值对 
		boolean flag1 = map.containsKey(10);
		System.out.println(flag1); 
		boolean flag2 = map.containsValue("萨摩耶");
		System.out.println(flag2); 
		// 如何遍历map集合 
		// 方式1:先获取所有key在根据key获取
		System.out.println("第1种遍历方式:"); 
		Set<Integer> set = map.keySet(); 
		for (Integer key : set) { 
			String value = map.get(key); 
			System.out.println(key + "=" + value); 
		}
		// 方式2:不能获取key,只获取所有值的方法 
		// Collection<V> values() 
		System.out.println("第2种遍历方式:"); 
		Collection<String> values = (Collection<String>) map.values(); 
		System.out.println(values); 
		//方式3:直接获取键值对 
		//在Map接口中有一个内部接口 Entry键值对对象 
		// getKey()方法 和 getValue()方法 
		// Set<Map.Entry<K,V>> entrySet() 
		Set<Map.Entry<Integer, String>> set2=map.entrySet(); 
		for(Map.Entry<Integer, String> entry:set2) { 
			// System.out.println(entry); 
			Integer key=entry.getKey(); 
			String value=entry.getValue(); 
			System.out.println(key+"---"+value); 
		}
		//map不能直接使用迭代器进行遍历,需要转换成set再遍历 
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值