Java 基础 38 HashMap集合的相关案例

1.1HashMap集合的练习键是String值是Student

练习1:两种方式遍历

  • HashMap
  • 键:String 学号
  • 值:Student 学生对象

1.1.1案例代码

package com.itheima_03;

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(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;
    }

}


package com.itheima_03;

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

/*
 * 练习1:两种方式遍历
 * HashMap
 * 键:String 学号
 * 值:Student 学生对象
 */
public class HashMapTest {
    public static void main(String[] args) {
        // 创建集合对象
        HashMap hm = new HashMap();

        // 创建元素对象
        Student s1 = new Student("林青霞", 30);
        Student s2 = new Student("张曼玉", 35);
        Student s3 = new Student("王祖贤", 33);

        // 添加元素到集合中
        hm.put("it001", s1);
        hm.put("it002", s2);
        hm.put("it003", s3);

        // 遍历
        // 根据键找值
        Set set = hm.keySet();
        for (String key : set) {
            Student value = hm.get(key);
            System.out.println(key + "---" + value.getName() + "---" + value.getAge());
        }
        System.out.println("---------------------");

        // 根据键值对对象找键和值
        Set> set2 = hm.entrySet();
        for (Map.Entry me : set2) {
            String key = me.getKey();
            Student value = me.getValue();
            System.out.println(key + "---" + value.getName() + "---" + value.getAge());
        }
    }
}

1.2 HashMap集合的练习键是Student值是String

练习2:任选一种方式遍历

  • HashMap
  • 键:Student 学生对象
  • 值:String 学生住址

要求:

  • 如果学生对象的成员变量值相同,就说明是同一个键。

1.2.1 案例代码

package com.itheima_04;

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(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;
        Student other = (Student) 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;
    }

    
}
package com.itheima_04;

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

/*
 * 练习2:任选一种方式遍历
 * HashMap
 * 键:Student 学生对象
 * 值:String 学生住址
 * 要求:如果学生对象的成员变量值相同,就说明是同一个键。
 */
public class HashMapTest {
    public static void main(String[] args) {
        //创建集合对象
        HashMap hm = new HashMap();
        
        //创建元素对象
        Student s1 = new Student("林青霞",30);
        Student s2 = new Student("张曼玉",35);
        Student s3 = new Student("王祖贤",33);
        Student s4 = new Student("张曼玉",35);
        
        //添加元素到集合中
        hm.put(s1, "北京");
        hm.put(s2, "上海");
        hm.put(s3, "西安");
        hm.put(s4, "香港");
        
        //键找值
        Set set = hm.keySet();
        for(Student key : set) {
            String value = hm.get(key);
            System.out.println(key.getName()+"---"+key.getAge()+"---"+value);
        }
    }
}

1.3 集合的嵌套练习之ArrayList嵌套HashMap

需求:

  • ArrayList集合嵌套HashMap集合并遍历。

  • 定义一个ArrayList集合,它包含三个元素,每一个元素都是HashMap类型的。

String String
丈夫的姓名 妻子的姓名

每一个HashMap集合的键和值都是String类型的,

String String
丈夫的姓名 妻子的姓名
String String
孙策 大乔
周瑜 小乔

给出如下的字符串数据,请用代码实现需求。
第一个HashMap集合的元素:

String String
孙策 大乔
周瑜 小乔
String String
郭靖 黄蓉
杨过 小龙女

第二个HashMap集合的元素:

String String
郭靖 黄蓉
杨过 小龙女
String String
令狐冲 任盈盈
林平之 岳灵珊

第三个HashMap集合的元素:

String String
令狐冲 任盈盈
林平之 岳灵珊

1.3.1 案例代码

package com.itheima;

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

/*
 * 需求:ArrayList集合嵌套HashMap集合并遍历。
 * 定义一个ArrayList集合,它包含三个元素,每一个元素都是HashMap类型的。
 * 每一个HashMap集合的键和值都是String类型的,
 * 键:String     丈夫的姓名
 * 值:String     妻子的姓名
 * 给出如下的字符串数据,请用代码实现需求。
 * 第一个HashMap集合的元素:
 *      孙策      大乔
 *      周瑜      小乔
 * 第二个HashMap集合的元素:
 *      郭靖      黄蓉
 *      杨过      小龙女
 * 第三个HashMap集合的元素:
 *      令狐冲 任盈盈
 *      林平之 岳灵珊
 */
public class ArrayListIncludeHashMapTest {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList> array = new ArrayList>();
        
        //创建元素1
        HashMap hm1 = new HashMap();
        hm1.put("孙策","大乔");
        hm1.put("周瑜","小乔");
        //把元素添加到array中
        array.add(hm1);
        
        //创建元素2
        HashMap hm2 = new HashMap();
        hm2.put("郭靖","黄蓉");
        hm2.put("杨过","小龙女");
        //把元素添加到array中
        array.add(hm2);
        
        //创建元素3
        HashMap hm3 = new HashMap();
        hm3.put("令狐冲","任盈盈");
        hm3.put("林平之","岳灵珊");
        //把元素添加到array中
        array.add(hm3);
        
        //遍历ArrayList集合
        for(HashMap hm : array) {
            Set set = hm.keySet();
            for(String key : set) {
                String value = hm.get(key);
                System.out.println(key+"---"+value);
            }
            System.out.println("-----------------");
        }
        
    }
}

1.4集合的嵌套练习之HashMap嵌套ArrayList

  • 需求:HashMap集合嵌套ArrayList集合并遍历。

  定义一个HashMap集合,它包含三个元素,每一个元素的键是String类型,值是ArrayList类型。

String ArrayList
人物来自哪部电视剧 人物的名称

格式

String ArrayList
人物来自哪部电视剧 人物的名称

  每一个ArrayList集合的数据是String类型的。

  给出如下的字符串数据,请用代码实现需求

  • 第一个ArrayList集合的元素:(三国演义)

    • 诸葛亮
    • 赵云
  • 第二个ArrayList集合的元素:(西游记)

    • 唐僧
    • 孙悟空
  • 第三个ArrayList集合的元素:(水浒传)

    • 武松
    • 鲁智深

1.4.1 案例代码

package com.itheima;

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

/*
 * 需求:HashMap集合嵌套ArrayList集合并遍历。
 * 定义一个HashMap集合,它包含三个元素,每一个元素的键是String类型,值是ArrayList类型。
 * 键:String         人物来自哪部电视剧
 * 值:ArrayList      人物的名称
 * 每一个ArrayList集合的数据是String类型的。
 * 给出如下的字符串数据,请用代码实现需求。
 * 第一个ArrayList集合的元素:(三国演义)
 *      诸葛亮
 *      赵云
 * 第二个ArrayList集合的元素:(西游记)
 *      唐僧
 *      孙悟空
 * 第三个ArrayList集合的元素:(水浒传)
 *      武松
 *      鲁智深
 */
public class HashMapIncludeArrayListTest {
    public static void main(String[] args) {
        //创建集合对象
        HashMap> hm = new HashMap>();
    
        //创建元素1
        ArrayList sgyy = new ArrayList();
        sgyy.add("诸葛亮");
        sgyy.add("赵云");
        //把元素添加到hm中
        hm.put("三国演义", sgyy);
        
        //创建元素2
        ArrayList xyj = new ArrayList();
        xyj.add("唐僧");
        xyj.add("孙悟空");
        //把元素添加到hm中
        hm.put("西游记", xyj);
        
        //创建元素3
        ArrayList shz = new ArrayList();
        shz.add("武松");
        shz.add("鲁智深");
        //把元素添加到hm中
        hm.put("水浒传", shz);
        
        //遍历集合
        Set set = hm.keySet();
        for(String key : set) {
            System.out.println(key);
            ArrayList value = hm.get(key);
            for(String s : value) {
                System.out.println("\t"+s);
            }
        }
    }
}

你可能感兴趣的:(Java 基础 38 HashMap集合的相关案例)