集合框架(Map)

目录

一、Map的特点

二、Map的遍历方式

 三、HashMap与HashTable之间的区别

四、Map集合3层嵌套使用(2Map+1List)小案例


一、Map的特点

        无序、以键值对的形式添加元素,键不能重复,值可以重复。它没有继承Collection接口

二、Map的遍历方式

1、获取map集合中所有key的set集合,再通过key获取值value

Map<String, Object> map = new HashMap<String, Object>();
map.put("艾斯", "撒旦");
map.put("全文", "从v");
map.put("这些", "体育件");
map.put("二方", "体育");
		
//map集合的遍历方式 1.获取map集合中所有key的set集合,再通过key获取值value
Set<String> keySet = map.keySet();
		
for (String key : keySet) {
    //通过键获取对应的值
	Object value = map.get(key);
	System.out.println(key+"="+value);
}

2、先取出保存所有键值对(Entry)的Set,再遍历此Set即可 (重要点)

Map<String, Object> map = new HashMap<String, Object>();
map.put("艾斯", "撒旦");
map.put("全文", "从v");
map.put("这些", "体育件");
map.put("二方", "体育");
		
//map遍历方式2.先取出保存所有键值对(Entry)的Set,再遍历此Set即可 (重要点)
Set<Entry<String, Object>> entrySet = map.entrySet();
for (Entry<String, Object> entry : entrySet) {
	System.out.println(entry);
	System.out.println(entry.getKey());
	System.out.println(entry.getValue());
}

 

 三、HashMap与HashTable之间的区别

1、HashTable

        同步既排队 ,线程是安全的

        键不可以为null,值也不能为null

2、HashMap

        异步,线程是不安全的

        键可以为null,值也可以为null

 

四、Map集合3层嵌套使用(2Map+1List)小案例

1、Student.java

public class Student implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 4682477983251791848L;
	private String name;
	private Integer source;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getSource() {
		return source;
	}
	public void setSource(Integer source) {
		this.source = source;
	}
	
	public Student() {
		// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", source=" + source + "]";
	}
	public Student(String name, Integer source) {
		super();
		this.name = name;
		this.source = source;
	}
}

2、

public static void main(String[] args) {
	Map<String, Map<String,List<Student>>> map = 
			new HashMap<String, Map<String,List<Student>>>();
		
//====================================================================
		
	List<Student> als = new ArrayList<Student>();
	als.add(new Student("张晓东",90));
	als.add(new Student("张晓西",75));
		
	List<Student> bls = new ArrayList<Student>();
	bls.add(new Student("张晓北",80));
	bls.add(new Student("张晓南",82));
		
	Map<String, List<Student>> amap = new HashMap<String, List<Student>>();
	amap.put("T110", als);
	amap.put("T111", bls);
		
//====================================================================

	List<Student> cls = new ArrayList<Student>();
	cls.add(new Student("张三",90));
	cls.add(new Student("李四",100));
		
	List<Student> dls = new ArrayList<Student>();
	dls.add(new Student("王五",70));
	dls.add(new Student("小六",100));
		
	List<Student> els = new ArrayList<Student>();
	els.add(new Student("小八",70));
	els.add(new Student("小九",100));
		
	Map<String, List<Student>> bmap = new HashMap<String, List<Student>>();
	bmap.put("T206", cls);
	bmap.put("T222", dls);
	bmap.put("T208", els);
		
//====================================================================

	List<Student> fls = new ArrayList<Student>();
	fls.add(new Student("可乐",60));
	fls.add(new Student("雪碧",50));
		
	List<Student> gls = new ArrayList<Student>();
	gls.add(new Student("哇哈哈",90));
	gls.add(new Student("老干妈",80));
		
	Map<String, List<Student>> cmap = new HashMap<String, List<Student>>();
	cmap.put("T230", fls);
	cmap.put("T231", gls);
			
	map.put("卓京初中部",amap);
	map.put("卓京高中部",bmap);
	map.put("卓京大学部",cmap);
		
	Set<String> keySet = map.keySet();
	for (String key : keySet) {
		Map<String, List<Student>> value = map.get(key);
		System.out.println(key);
		Set<String> keySet2 = value.keySet();
		for (String key2 : keySet2) {
			System.out.println("\t"+key2);
			List<Student> ls = value.get(key2);
			for (Student stu : ls) {
				System.out.println("\t\t"+stu.getName()+"  "+stu.getSource());
			}
		}
	}
}

3、运行效果:

卓京高中部
	T208
		小八  70
		小九  100
	T206
		张三  90
		李四  100
	T222
		王五  70
		小六  100
卓京大学部
	T231
		哇哈哈  90
		老干妈  80
	T230
		可乐  60
		雪碧  50
卓京初中部
	T110
		张晓东  90
		张晓西  75
	T111
		张晓北  80
		张晓南  82
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: Java集合框架中的Map是一种键值对的数据结构,可以存储一组具有唯一键和对应值的元素。使用泛型可以在编译时进行类型检查,确保集合中只能存储指定类型的元素,提高代码的可读性和安全性。 在引用中的示例代码中,List<String>定义了一个只能存储字符串类型元素的列表。在引用中的示例代码中,Collection<String>和Collection<Integer>分别定义了只能存储字符串类型和整数类型元素的集合。使用泛型通配符可以增加集合的灵活性。比如在coll.removeAll(c)方法中,传入的Collection对象的泛型可以是任意类型。另外,泛型还可以应用于Map集合,如引用中的示例代码中,Set<Map.Entry<String,String>>定义了只能存储键值对类型为String的元素的集合。 综上所述,Java集合框架中的Map和泛型可以一起使用,通过泛型可以指定集合中存储的元素类型,增加代码的可读性和类型安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [java基础中的--------Map+泛型](https://blog.csdn.net/liutaiwu/article/details/107915445)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码怎么敲啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值