HashMap集合(键是String键值是String案例---键是Integer键值是String案例---键是String键值是Student---键是Student键值是String)


HashMap:是基于哈希表的Map接口实现。
* 哈希表的作用是用来保证键的唯一性的。
*
* HashMap
* 键:String
* 值:String
*/

package Day18;

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

public class Map2 {
    public static void main(String[] args) {
        //创建HashMap集合
        HashMap AA = new HashMap();

        //向集合中添加数据元素
        AA.put("0x001","马云");
        AA.put("0xOO2","马化腾");
        AA.put("0x003","柳传志");
        AA.put("0xOO4","张朝阳");

        //对HashMap集合进行遍历
        //利用键值----进行遍历
        //首先创建键的集合
        Set AB = AA.keySet();
        //对键集合进行遍历
        for(String e: AB){
            ///利用键获取对应的键值
            String ABC = AA.get(e);
            //输出通过键获得的值
            System.out.println(ABC);
        }

    }

}

/*
* HashMap
* 键:Integer
* 值:String
*/

package cn.itcast_02;

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

/*
 * HashMap
 * 键:Integer
 * 值:String
 */
public class HashMapDemo2 {
    public static void main(String[] args) {
        // 创建集合对象
        HashMap hm = new HashMap();

        // 创建元素并添加元素
        // Integer i = new Integer(27);
        // Integer i = 27;
        // String s = "林青霞";
        // hm.put(i, s);

        hm.put(27, "林青霞");
        hm.put(30, "风清扬");
        hm.put(28, "刘意");
        hm.put(29, "林青霞");

        // 下面的写法是八进制,但是不能出现8以上的单个数据
        // hm.put(003, "hello");
        // hm.put(006, "hello");
        // hm.put(007, "hello");
        // hm.put(008, "hello");

        // 遍历
        Set set = hm.keySet();
        for (Integer key : set) {
            String value = hm.get(key);
            System.out.println(key + "---" + value);
        }

        // 下面这种方式仅仅是集合的元素的字符串表示
        // System.out.println("hm:" + hm);
    }
}

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

学生类

package Day18;

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 Day18;
import java.util.HashMap;
import java.util.Set;

public class Map3 {
    public static void main(String[] args) {
        //创建集合
        HashMap AA = new HashMap();

        //创建学生类对象
        Student A = new Student("赵同刚",24);
        Student B = new Student("朱庆娜",24);

        //给集合对象添加元素
        AA.put("001",A);
        AA.put("002",B);

        //进行对集合的键值遍历
        //创建键的集合
      Set ABC = AA.keySet();
      //进行对键的集合遍历---来获取每个键所对应的键值
        for(String e: ABC){
            //使用键--来获取对应的集合的键值
            Student ABCD = AA.get(e);
            //输出进行查看遍历的键和值
            System.out.println(e+"--"+ABCD.getName()+"--"+ABCD.getAge());
        }
    }
}

HashMap
* 键:Student
* 要求:如果两个对象的成员变量值都相同,则为同一个对象。
* 值:String

学生类

    package Day18;

import java.util.Objects;

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;
    }

    //重写HashCode和equals方法
    //使Set集合输出时不会出现重复值
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Student)) return false;
        Student student = (Student) o;
        return getAge() == student.getAge() &&
                Objects.equals(getName(), student.getName());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getName(), getAge());
    }
}

测试类

package Day18.User;

import Day18.Student;

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

public class Map4 {
    public static void main(String[] args) {
        //创建集合对象
        HashMap AA = new HashMap();

        //创建学生类对象
        //键相同则键值存在覆盖
        Student A = new Student("赵同刚",24);
        Student B = new Student("朱庆娜",24);
        Student C = new Student("赵同刚",24);
        Student D = new Student("王丽丽",24);

        //向集合中添加元素
        AA.put(A,"有钱");
        AA.put(B,"漂亮");
        AA.put(C,"删除");
        AA.put(D,"幸运");

        //遍历
        //首先将所有键放到一个集合中
        //Set类型是键的类型----创建键的集合
        Set ABC= AA.keySet();
        //对集合进行遍历
        for(Student e: ABC){
            //利用键获取键值
            String ABCD = AA.get(e);
            System.out.println(e.getName()+"--"+e.getAge()+"---"+ABCD);
        }

    }
}

相关