IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> java中Map集合使用 -> 正文阅读

[数据结构与算法]java中Map集合使用

Map集合的遍历(方式1)

转换为Map集合中的操作:
1.获取所有键的集合。用keySet()方法实现
2.遍历键的集合,获取到每一个键。用增强for实现
3.根据键去找值。用get(Object key)方法实现

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

public class map1 {
	public static void main(String[] args) {
		//创建集合对象
		Map<String,String> map = new HashMap<String, String>();
		
		//添加元素
		map.put("cc1", "cc2");
		map.put("zz1", "zz2");
		map.put("ww1", "ww2");
		
		//获取所有键的集合。用keySet()方法实现
		Set<String> ks = map.keySet();
		//遍历键的集合,获取到每一个键。用增强for实现
		for(String key : ks) {
			//根据键去找值。用get(Object key)方法实现
			String value = map.get(key);
			System.out.println(key + "," + value);
		}
	}
}

输出
在这里插入图片描述

Map集合的遍历(方式2)

把Map看成是一个夫妻对的集合遍历思路
1、获取所有结婚证的集合
2、遍历结婚证的集合,得到每一个结婚证
3、根据结婚证获取丈夫和妻子

转换为Map集合中的操作:
1、获取所有键值对对象的集合

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

2、遍历键值对对象的集合,得到每一个键值对对象
用增强for实现,得到每一个Map.Entry
3、根据键值对对象获取键和值
用getKey()得到键
用getValue()得到值

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

public class map2 {

	public static void main(String[] args) {
		//创建集合对象
		Map<String, String> map = new HashMap<String, String>();
		
		//添加元素
		map.put("cc1", "cc2");
		map.put("zz1", "zz2");
		map.put("ww1", "ww2");
		
		//获取所有键值对对象的集合
		Set<Map.Entry<String, String>> es = map.entrySet();
		//遍历键值对对象的集合,得到每一个键值对对象
		for(Map.Entry<String, String> me : es) {
			String key = me.getKey();
			String value = me.getValue();
			System.out.println(key + "," + value);
		}

	}

}

输出
在这里插入图片描述

HashMap集合存储学生对象并遍历

需求:创建一个HashMap集合,键是学号(String),值是学生对象(Student)。存储三个键值对元素,并遍历

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

public class HashMap1 {

	public static void main(String[] args) {
		//创建HashMap集合对象
		HashMap<String, Student1> hm = new HashMap<String, Student1>();
		
		//创建学生对象
		Student1 s1 = new Student1("cc1", 20);
		Student1 s2 = new Student1("cc2", 18);
		Student1 s3 = new Student1("cc3", 22);
		
		//把学生添加到集合
		hm.put("001", s1);
		hm.put("002", s2);
		hm.put("003", s3);
		
		//方式1:键找值
		Set<String> ks = hm.keySet();
		for(String key : ks) {
			Student1 value = hm.get(key);
			System.out.println(key + "," + value.getName() + "," + value.getAge());
		}
		
		//方式2:键值对对象找键和值
		Set<Map.Entry<String, Student1>> es = hm.entrySet();
		for(Map.Entry<String, Student1> me : es) {
			String key = me.getKey();
			Student1 value = me.getValue();
			System.out.println(key + "," + value.getName() + "," + value.getAge());
		}
	}

}
public class Student1 {
	private String name;
	private int age;
	
	public Student1() {
		
	}
	
	public Student1(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getAge() {
		return age;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
}

输出
在这里插入图片描述

HashMap集合存储学生对象并遍历

需求:创建一个HashMap集合,键是学生对象(Student),值是居住地(String)。存储多个键值对元素,并遍历。
要保证键的唯一性:如果学生对象的成员变量值相同,我们就认为是同一个对象

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

public class HashMap2 {

	public static void main(String[] args) {
		//创建HashMap集合对象
		HashMap<Student1, String> hm = new HashMap<Student1, String>();
		
		//创建学生对象
		Student1 s1 = new Student1("cc1", 20);
		Student1 s2 = new Student1("cc2", 18);
		Student1 s3 = new Student1("cc3", 22);
		Student1 s4 = new Student1("cc3", 22);
		
		//把学生添加到集合
		hm.put(s1, "西安");
		hm.put(s2, "武汉");
		hm.put(s3, "郑州");
		hm.put(s4, "北京");
		
		//遍历集合
		Set<Student1> ks = hm.keySet();
		for(Student1 key : ks) {
			String value = hm.get(key);
			System.out.println(key.getName() + "," + key.getAge() + "," + value);
		}

	}

}
public class Student1 {
	private String name;
	private int age;
	
	public Student1() {
		
	}
	
	public Student1(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getAge() {
		return age;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
//学生类中重写两个方法
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student1 other = (Student1) obj;
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
}

如果不调用equals(),hashCode()
在这里插入图片描述
调用后输出
新加的键和值将覆盖之前的
在这里插入图片描述

ArrayList集合存储HashMap元素并遍历

需求:创建一个ArrayList集合,存储三个元素,每一个元素都是HashMap,每一个HashMap的键和值都是String,并遍历。

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

public class ArrayListHashMap {

	public static void main(String[] args) {
		//创建ArrayList集合
		ArrayList<HashMap<String, String>> a = new ArrayList<HashMap<String, String>>();
		
		//创建HashMap集合,并添加键值对元素
		HashMap<String, String> hm1 = new HashMap<String, String>();
		hm1.put("cc1", "cc2");
		//把HashMap作为元素添加到ArrayList集合
		a.add(hm1);
		
		HashMap<String, String> hm2 = new HashMap<String, String>();
		hm1.put("zz1", "zz2");
		//把HashMap作为元素添加到ArrayList集合
		a.add(hm2);
		
		HashMap<String, String> hm3 = new HashMap<String, String>();
		hm1.put("ww1", "ww2");
		//把HashMap作为元素添加到ArrayList集合
		a.add(hm3);
		
		//遍历ArrayList集合
		for(HashMap<String, String> hm : a) {
			Set<String> ks = hm.keySet();
			for(String key : ks) {
				String value = hm.get(key);
				System.out.println(key + "," + value);
			}
		}
	}

}

输出
在这里插入图片描述

HashMap集合存储ArrayList元素并遍历

需求:创建一个HashMap集合,存储三个元素,每一个键值对元素的键是String,值是ArrayList,每一个ArrayList的元素是String,并遍历。

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

public class HashMapArrayList {

	public static void main(String[] args) {
		//创建HashMap集合
		HashMap<String, ArrayList<String>> hm = new HashMap<String, ArrayList<String>>();
		
		//创建ArrayList集合,并添加元素
		ArrayList<String> s1 = new ArrayList<String>();
		s1.add("cc1");
		//把ArrayList作为元素添加到HashMap集合
		hm.put("zz", s1);
		
		ArrayList<String> s2 = new ArrayList<String>();
		s2.add("cc2");
		//把ArrayList作为元素添加到HashMap集合
		hm.put("bb", s2);
		
		ArrayList<String> s3 = new ArrayList<String>();
		s3.add("cc3");
		//把ArrayList作为元素添加到HashMap集合
		hm.put("ww", s3);

		//遍历HashMap集合
		Set<String> ks = hm.keySet();
		for(String key : ks) {
			System.out.println(key);
			ArrayList<String> value = hm.get(key);
			for(String s : value) {
				System.out.println("\t" + s);
			}
		}
	}

}

输出
在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:38:52  更:2021-11-20 18:40:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:17:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码