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

2018-02-03  本文已影响21人  小熊先生很不开心

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

练习1:两种方式遍历

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>
 * 键:String 学号
 * 值:Student 学生对象
 */
public class HashMapTest {
    public static void main(String[] args) {
        // 创建集合对象
        HashMap<String, Student> hm = new HashMap<String, Student>();

        // 创建元素对象
        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<String> set = hm.keySet();
        for (String key : set) {
            Student value = hm.get(key);
            System.out.println(key + "---" + value.getName() + "---" + value.getAge());
        }
        System.out.println("---------------------");

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

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

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

要求:

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>
 * 键:Student 学生对象
 * 值:String 学生住址
 * 要求:如果学生对象的成员变量值相同,就说明是同一个键。
 */
public class HashMapTest {
    public static void main(String[] args) {
        //创建集合对象
        HashMap<Student,String> hm = new HashMap<Student,String>();
        
        //创建元素对象
        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<Student> set = hm.keySet();
        for(Student key : set) {
            String value = hm.get(key);
            System.out.println(key.getName()+"---"+key.getAge()+"---"+value);
        }
    }
}

1.3 集合的嵌套练习之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<HashMap<String,String>> array = new ArrayList<HashMap<String,String>>();
        
        //创建元素1
        HashMap<String,String> hm1 = new HashMap<String,String>();
        hm1.put("孙策","大乔");
        hm1.put("周瑜","小乔");
        //把元素添加到array中
        array.add(hm1);
        
        //创建元素2
        HashMap<String,String> hm2 = new HashMap<String,String>();
        hm2.put("郭靖","黄蓉");
        hm2.put("杨过","小龙女");
        //把元素添加到array中
        array.add(hm2);
        
        //创建元素3
        HashMap<String,String> hm3 = new HashMap<String,String>();
        hm3.put("令狐冲","任盈盈");
        hm3.put("林平之","岳灵珊");
        //把元素添加到array中
        array.add(hm3);
        
        //遍历ArrayList集合
        for(HashMap<String,String> hm : array) {
            Set<String> 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集合,它包含三个元素,每一个元素的键是String类型,值是ArrayList类型。

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

格式

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

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

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

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<String,ArrayList<String>> hm = new HashMap<String,ArrayList<String>>();
    
        //创建元素1
        ArrayList<String> sgyy = new ArrayList<String>();
        sgyy.add("诸葛亮");
        sgyy.add("赵云");
        //把元素添加到hm中
        hm.put("三国演义", sgyy);
        
        //创建元素2
        ArrayList<String> xyj = new ArrayList<String>();
        xyj.add("唐僧");
        xyj.add("孙悟空");
        //把元素添加到hm中
        hm.put("西游记", xyj);
        
        //创建元素3
        ArrayList<String> shz = new ArrayList<String>();
        shz.add("武松");
        shz.add("鲁智深");
        //把元素添加到hm中
        hm.put("水浒传", shz);
        
        //遍历集合
        Set<String> set = hm.keySet();
        for(String key : set) {
            System.out.println(key);
            ArrayList<String> value = hm.get(key);
            for(String s : value) {
                System.out.println("\t"+s);
            }
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读