17.Map集合(※重点※)

1.概述

Map接口是将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
无索引,无序,key唯一,value可重复
在这里插入图片描述


2.Map常用实现类(用put()添加元素)

1)HashMap(基于Map接口)

存储特点:无序,元素以键值对形式存在,键不可以重复,值可以重复,元素整体排重,可以快速的通过键查找到所对应的值线程不安全,通过哈希表实现的集合。

2)LinkedHashMap

存储特点:有序,排重,通过链表实现的集合

3)Hashtable

存储特点:无序,排重,通过哈希表实现的集合.不允许键或值为null,线程安全

4)TreeMap

存储特点:自定义排序

例:

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public class MapDemo {

	public static void main(String[] args) {
		//存放值
		LinkedHashMap<String, String> con=new LinkedHashMap<String,String>();
		con.put("CN", "中华人民共和国");
		con.put("USA", "美国");
		con.put("JP", "日本");
		con.put("JP", "中华人民共和国日本省");
		con.put("UK", "中华人民共和国");
		
		System.out.println(con);
		System.out.println("个数:"+con.size());
		//集合对象.get(key)  获取的是key对应的value
		System.out.println(con.get("CN"));
		//通过key删除value
		con.remove("JP");
		System.out.println(con);
	}

}

Map集合的遍历:

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

public class MapDemo2 {

	public static void main(String[] args) {
		Map<String, Student> mapStu=new HashMap<String, Student>();
		Student gu=new Student();
		gu.setStuName("谷丰");
		gu.setStuNo("1001");
		Student cui=new Student();
		cui.setStuName("崔宸");
		cui.setStuNo("1002");
		mapStu.put(gu.getStuNo(), gu);
		mapStu.put(cui.getStuNo(), cui);
		
		//获取单个对象
		Student getGuFeng=mapStu.get("1001");
		System.out.println(getGuFeng.getStuName());
		
		//循环遍历
		//遍历方式1:
		//第一步:先获取到所有key值
		Set<String> allKeys=mapStu.keySet();
		//第二步:通过Set集合得到迭代器
		Iterator<String> it=allKeys.iterator();
		//第三步:遍历迭代器中的所有key值
		while(it.hasNext()){
			String key=it.next();
			Student s=mapStu.get(key);
			System.out.println(s.getStuName());
		}
		//遍历方式2:
		Set<Entry<String, Student>> entrySet= mapStu.entrySet();
		Iterator<Entry<String,Student>> it2=entrySet.iterator();
		while(it2.hasNext()){
			//it2.next()  得到的是键值对对象
			//System.out.println(it2.next());
			Entry<String,Student> entry= it2.next();
			System.out.println(entry.getKey()+"---------------------"+entry.getValue());
		}
	}
}

3.HashMap与Hashtable的区别

  • 1)Hashtable中的方法都是线程安全的,而HashMap中的方法是非线程安全
  • 2)Hashtable中不允许存在null的键和值,但是HashMap中允许null的键和值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值