hashmap的嵌套,存储一个自定义类

Posted 虎虎地程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hashmap的嵌套,存储一个自定义类相关的知识,希望对你有一定的参考价值。

hashmap的嵌套,存储一个自定义类

/*
* hashmap的嵌套,存储一个自定义类
*
*分析:
* 1.创建一个hashmap,且它的键和值的其中一个也是hashmap
* 2.创建两个hashmap,它的键 是自定义类Student
* 3.创建Student对象,并分别向第二步的两个hashmap添加
* 4.分两种方法遍历输出
*/

 

自定义类:

public class Student {
	
	private String name;
	private int age;
	public Student() {
		super();
	}
	public Student(String name, int age) {
		super();
		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 String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}

	
	

}

  hashmap类:

import java.util.Collection;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
/**
 * hashmap的嵌套
 * @author ma
 *
 */
public class HashMapDemo6 {
	/*
	 * hashmap的嵌套,存储一个自定义类
	 * 
	 *分析:
	 *	1.创建一个hashmap,且它的键和值的其中一个也是hashmap
	 *	2.创建两个hashmap,它的键 是自定义类Student
	 *	3.创建Student对象,并分别向第二步的两个hashmap添加
	 *	4.分两种方法遍历输出
	 */
	
	public static void main(String[] args) {
		
		//声明一个嵌套的hashmap对象hmhm
		HashMap<String, HashMap<Student, String>> hmhm = new HashMap<String, HashMap<Student,String>>();
		
		//声明一个hashmap对象hm1
		HashMap<Student, String> hm1 = new HashMap<Student, String>();
		
		//声明两个学生对象
		Student s1 = new Student("张三",1);
		Student s2 = new Student("李四",2);
		
		//把对象放入hm1
		hm1.put(s1, "1");
		hm1.put(s2, "2");
		
		//声明一个hashmap对象hm2
		HashMap<Student, String> hm2 = new HashMap<Student, String>();
		
		//声明两个学生对象
		Student s3 = new Student("赵大",3);
		Student s4 = new Student("王二",4);
		
		//把对象放入hm2
		hm1.put(s3, "3");
		hm1.put(s4, "4");
		
		//把hm1和hm2放入hmhm
		hmhm.put("1", hm1);
		hmhm.put("2", hm2);
		
		//遍历输出1
		Set<Entry<String, HashMap<Student, String>>> set = hmhm.entrySet();
		for (Entry<String, HashMap<Student, String>> entry : set) {
			
			Set<Entry<Student, String>> entry1 = entry.getValue().entrySet();
			for (Entry<Student, String> entry2 : entry1) {
				System.out.println(entry2);
			}
		}
		
		System.out.println("-------------------------------------------------");
		
		//遍历输出2
		Collection<HashMap<Student, String>> collection = hmhm.values();
		for (HashMap<Student, String> hashMap : collection) {
				
				for(Student s : hashMap.keySet()){
					System.out.println(s);
				}
		}
		
	}
	
}

  输出结果:

    Student [name=李四, age=2]=2
    Student [name=王二, age=4]=4
    Student [name=赵大, age=3]=3
    Student [name=张三, age=1]=1
-------------------------------------------------
    Student [name=李四, age=2]
    Student [name=王二, age=4]
    Student [name=赵大, age=3]
    Student [name=张三, age=1]

以上是关于hashmap的嵌套,存储一个自定义类的主要内容,如果未能解决你的问题,请参考以下文章

创建一个自定义比较器

HashMap中使用自定义类作为Key时,为何要重写HashCode和Equals方法

HashMap存储自定义类型键值

HashMap的自定义实现

hashmap 自定义类键 && 对象保存/加载

为什么不建议使用自定义Object作为HashMap的key?