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);
		}
	}
}

输出

java map集合 创建 java中map集合_开发语言

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);
		}

	}

}

输出

java map集合 创建 java中map集合_System_02

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;
	}
}

输出

java map集合 创建 java中map集合_System_03

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()

java map集合 创建 java中map集合_java_04


调用后输出

新加的键和值将覆盖之前的

java map集合 创建 java中map集合_java_05

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);
			}
		}
	}

}

输出

java map集合 创建 java中map集合_键值对_06

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);
			}
		}
	}

}

输出

java map集合 创建 java中map集合_键值对_07