美文网首页
Java 基础 38 HashMap集合的相关案例

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

作者: 小熊先生很不开心 | 来源:发表于2018-02-03 10:52 被阅读21次

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

    练习1:两种方式遍历

    • HashMap<String,Student>
    • 键: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>
     * 键: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:任选一种方式遍历

    • HashMap<Student,String>
    • 键: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>
     * 键: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

    需求:

    • 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<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集合嵌套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<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);
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Java 基础 38 HashMap集合的相关案例

          本文链接:https://www.haomeiwen.com/subject/qefuzxtx.html