栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Map集合

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Map集合

目录

一、Map集合特点

二、Map集合遍历

三、Map存值和取值

 四、TreeMap和HashMap的区别


 一、Map集合特点

1.通过键值对的形式存储值。

Map> map = new HashMap<>();

2.键位不能重复。

往map集合增加重复的键位"AA";

Map> map = new HashMap<>();
        
// 放值
map.put("AA", "哈哈");
map.put("AA", "优优");
map.put("BB", "呵呵");
map.put("CC", "啊啊");
map.put("DD", "咯咯");
        
// 打印长度
System.out.println(map.size());

输出:

解析:重复的键位没有输出

3.值位可以重复。

往map集合增加重复的值位"哈哈";

Map> map = new HashMap<>();
        
// 放值
map.put("AA", "哈哈");
map.put("EE", "哈哈");
map.put("BB", "呵呵");
map.put("CC", "啊啊");
map.put("DD", "咯咯");
        
// 打印长度
System.out.println(map.size());

输出:

 解析:值位重复不影响输出。

4.如果键位重复了,值位会覆盖。

Map> map = new HashMap<>();
        
// 放值
map.put("AA", "哈哈");
map.put("AA", "优优");
map.put("BB", "呵呵");
map.put("CC", "啊啊");
map.put("DD", "咯咯");
        
// 取值
System.out.println(map.get("AA"));
        
// 打印长度
System.out.println(map.size());

输出:

解析:两个"AA"键位重复了,优优把哈哈覆盖了(后者会把前者覆盖)。

5.无序。

Map map = new HashMap<>();
        
// 放值
map.put("LDH", "刘德华");
map.put("ZLY", "赵丽颖");
map.put("YM", "杨幂");
        
Set> entrySet = map.entrySet();
        
// foreach
for (Entry entry : entrySet) {
            String key = entry.getKey();
            Object value = entry.getValue();
            System.out.println(key + "t" + value);
}

输出:

 解析:没有按照顺序输出。

二、Map集合遍历
Map> map = new HashMap<>();
        
// 放值
map.put("CE", "啊啊");
map.put("AC", "哈哈");
map.put("EE", "优优");
map.put("BU", "呵呵");
map.put("DA", "咯咯");

1.foreach

Set> entrySet = map.entrySet();
        for (Entry entry : entrySet) {
            String key = entry.getKey();
            Object value = entry.getValue();
            System.out.println(key + "t" + value);
}

2.迭代器:官方推荐的循环取值遍历方式

Set> entrySet = map.entrySet();
        Iterator> iterator = entrySet.iterator();
        while(iterator.hasNext()) {
            Entry next = iterator.next();
            System.out.println(next.getKey() + "t" + next.getValue());
}

输出:

三、Map存值和取值

案例:

package com.zking.Test;

public class Dog {
	private Integer did;
	private String dname;
	
	public Dog() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	public Dog(Integer did, String dname) {
		super();
		this.did = did;
		this.dname = dname;
	}
	
	public Integer getDid() {
		return did;
	}
	
	public void setDid(Integer did) {
		this.did = did;
	}
	
	public String getDname() {
		return dname;
	}
	
	public void setDname(String dname) {
		this.dname = dname;
	}
	
	@Override
	public String toString() {
		return "Dog [did=" + did + ", dname=" + dname + "]";
	}
	
}
package com.zking.Test;

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

public class Test {
	public static void main(String[] args) {
		// 1.存值
		// 键位代表狗窝,值位代表狗
		Map> map = new HashMap<>();
		for (int i = 1; i <= 10; i++) {// i代表键位狗窝,有10个狗窝
			// 定义一个存放狗放入数组
			List listDog = new ArrayList();
			
			for (int j = 1; j <= 10; j++) {// j代表值位狗,有10只狗
				Dog d = new Dog(j, i + "狗" + j + "号");// j代表键位,i代表值位
				listDog.add(d);// 把狗放到listDog集合里面
			}
			map.put(i + "", listDog);// 把键位(i),值位(listDog)增加到map集合里面
		}
		
		// 2.取值
		Set>> entrySet = map.entrySet();
		for (Entry> e : entrySet) {
			// 获取键位和值位
			String key = e.getKey();
			System.out.println("狗窝第:" + key + "个。");
			
			List value = e.getValue();
			for (Dog d : value) {
				System.out.println("t" + d);
			}
		}
		
	}
}

输出:

 一直输出到狗窝第10个。

 四、TreeMap和HashMap的区别
HashMap hashMap = new HashMap<>();
TreeMap treeMap = new TreeMap<>();

1.TreeMap键位可以为空,值位可以为空 ;       

hashMap.put(null, null);

2.TreeMap键位不能为空,值位可以为空(如果键位为null,会报空指针异常错误);

treeMap.put("", null);

完。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/930203.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号