目录

1.Map

1.1Map集合概述和使用

1.2Map集合的基本功能

1.3Map集合的获取功能

1.4Map集合的遍历

1.5Map集合的遍历(方式2)

案例:HashMap集合存储学生对象并遍历

案例:HashMap集合存储学生对象并遍历


1.Map

1.1Map集合概述和使用

Map集合概述
        InterfaceMap<KV>K键的类型;V值的类型
        将键映射到值的对象;不能包含重复的键;每个键可以映射到最多一个值

        

创建Map集合的对象
        多态的方式
        具体的实现类HashMap

package zyy07;


import java.util.HashMap;
import java.util.Map;
import java.util.TreeSet;

public class Demo {
    public static void main(String[] args) {
        //创建集合对象
        Map<String,String> map=new HashMap<String,String>();
        //put
        map.put("0124","zyy");
        map.put("0828","jw");
        map.put("0828","jwei");//输出这个,因为它会替代前一个
        map.put("1014","hwj");
        System.out.println(map);


    }
}

1.2Map集合的基本功能

Java定义map集合方法 java定义一个map类型_开发语言

package zyy07;


import java.util.HashMap;
import java.util.Map;
import java.util.TreeSet;

public class Demo {
    public static void main(String[] args) {
        //创建集合对象
        Map<String,String> map=new HashMap<String,String>();
        //put
        map.put("0124","zyy");
        map.put("0828","jw");
        map.put("0828","jwei");//输出这个,因为它会替代前一个
        map.put("1014","hwj");
        System.out.println(map);
        //remove
        System.out.println(map.remove("0124"));
        //System.out.println(map.remove(0810));
        //clear
        //map.clear();
        //containsKey
        System.out.println(map.containsKey("0828"));
        System.out.println(map.containsKey("0206"));
        //containsValue
        System.out.println(map.containsValue("hwj"));
        System.out.println(map.containsValue("zyy"));
        //isEmpty
        System.out.println(map.isEmpty());
        //size
        System.out.println(map.size());
        System.out.println(map);

    }
}

1.3Map集合的获取功能

Java定义map集合方法 java定义一个map类型_Map_02

package zyy07;


import java.util.*;

public class Demo {
    public static void main(String[] args) {
        //创建集合对象
        Map<String,String> map=new HashMap<String,String>();
        //put
        map.put("0124","zyy");
        map.put("0828","jw");
        map.put("0828","jwei");//输出这个,因为它会替代前一个
        map.put("1014","hwj");
        System.out.println(map);
        //get
        System.out.println(map.get("0124"));
        //set<k>keySet
        Set<String> ky=map.keySet();
        for(String s:ky){
            System.out.println(s);
        }
        //Collection<V> values
        Collection<String> v=map.values();
        for(String s:v){
            System.out.println(s);
        }

    }
}

 1.4Map集合的遍历

我们刚才存储的元素都是成对出现的,所以我们把Map看成是一个夫妻对的集合


遍历思路
        把所有的丈夫给集中起来
        遍历丈夫的集合,获取到每一个丈夫

        根据丈夫去找对应的妻子


转换为Map集合中的操作:
        获取所有键的集合。用kevSet()方法实现
        遍历键的集合,获取到每一个键。用增强for实现

        根据键去找值。用get(Obiectkev)方法实现

package zyy07;


import java.util.*;

public class Demo {
    public static void main(String[] args) {
        //创建集合对象
        Map<String,String> map=new HashMap<String,String>();
        //put
        map.put("0124","zyy");
        map.put("0828","jw");
        map.put("0828","jwei");//输出这个,因为它会替代前一个
        map.put("1014","hwj");
        System.out.println(map);
        //set<k>keySet
        Set<String> ky=map.keySet();
        for(String s:ky){
            String v=map.get(s);
            System.out.println(s+","+v);
        }

    }
}

1.5Map集合的遍历(方式2)

我们刚才存储的元素都是成对出现的,所以我们把Map看成是一个夫妻对的集合


遍历思路
        获取所有结婚证的集合
        遍历结婚证的集合,得到每一个结婚证

        根据结婚证获取丈夫和妻子


转换为Map集合中的操作:
        获取所有键值对对象的集合
        Set<Map.Entry<KV>> entrySet():获取所有键值对对象的集合

遍历键值对对象的集合,得到每一个键值对对象
        用增强for实现,得到每一个Map.Entry

根据键值对对象获取键和值
        用getKey0得到键

getValue()得到值


package zyy07;


import java.util.*;

public class Demo {
    public static void main(String[] args) {
        //创建集合对象
        Map<String,String> map=new HashMap<String,String>();
        //put
        map.put("0124","zyy");
        map.put("0828","jw");
        map.put("0828","jwei");//输出这个,因为它会替代前一个
        map.put("1014","hwj");
        System.out.println(map);
        Set<Map.Entry<String, String>> e = map.entrySet();
        for(Map.Entry<String, String> m:e){
            String s1=m.getKey();
            String s2=m.getValue();
            System.out.println(s1+","+s2);
        }
    }
}

案例:HashMap集合存储学生对象并遍历

需求:创建一个HashMap集合,键是学号(String),值是学生对象(Student)。存储三个键值对元素,并遍历

思路:
①定义学生类
②创建HashMap集合对象
③ 创建学生对象 
④把学生添加到集合
⑤遍历集合
        方式1:键找值
        方式2:键值对对象找键和值

学生类:

package com.test;

public class student  {
    //成员变量
    private String name;
    private int age;

    //构造方法
    public student(){
    }
    public student(String name,int age){
        this.name=name;
        this.age=age;
    }

    //成员方法
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return age;
    }


}

测试类:

package com.test;


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

public class studentdemo {

    public static void main(String[] args) {
        //创建集合对象
        HashMap<String,student> h=new HashMap<String,student>();
        //创建学生对象
        student s1=new student("zyy",10);
        student s2=new student("zy",11);
        student s3=new student("z",12);
        //把学生添加到集合
        h.put("0124",s1);
        h.put("012",s2);
        h.put("01",s3);
        //遍历集合1:键找值
        Set<String> k = h.keySet();
        for(String s: k){
            student v=h.get(s);
            System.out.println(s+","+v.getName()+","+v.getAge());
        }
        System.out.println("***********");
        //遍历集合2:键值对对象找键核值
        Set<Map.Entry<String, student>> e = h.entrySet();
        for(Map.Entry<String, student> v:e){
            String key =v.getKey();
            student va=v.getValue();
            System.out.println(key+","+va.getName()+","+va.getAge());
        }
    }
}

案例:HashMap集合存储学生对象并遍历

需求:创建一个HashMap集合,键是学生对象(Student),值是居住地(String)。存储多个键值对元素,并遍历。
        要求保证键的唯一性:如果学生对象的成员变量值相同,我们就认为是同一个对象

思路:
定义学生类
创建HashMap集合对象

创建学生对象
把学生添加到集合

遍历集合
在学生类中重写两个方法
       

hashCode()
        equals()

学生类:

package com.test;

public class student  {
    //成员变量
    private String name;
    private int age;

    //构造方法
    public student(){
    }
    public student(String name,int age){
        this.name=name;
        this.age=age;
    }

    //成员方法
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        student student = (student) o;

        if (age != student.age) return false;
        return name != null ? name.equals(student.name) : student.name == null;
    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }
}

测试类:

package com.test;


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

public class studentdemo {

    public static void main(String[] args) {
        //创建集合对象
        HashMap<student,String> h=new HashMap<student,String>();
        //创建学生对象
        student s1=new student("zyy",10);
        student s2=new student("zy",11);
        student s3=new student("z",12);
        student s4=new student("z",12);
        //把学生添加到集合
        h.put(s1,"洛阳");
        h.put(s2,"厦门");
        h.put(s3,"云南");
        h.put(s4,"新疆");
        //遍历集合1:键找值
        Set<student> k = h.keySet();
        for(student s: k){
            String v=h.get(s);
            System.out.println(v +","+s.getName()+","+s.getAge());
        }
        System.out.println("***********");
        //遍历集合2:键值对对象找键核值
        Set<Map.Entry<student,String>> e = h.entrySet();
        for(Map.Entry<student,String> v:e){
            student key =v.getKey();
            String  va=v.getValue();
            System.out.println(va+","+key.getName()+","+key.getAge());
        }
    }
}