您的位置:首页 > 编程语言 > Java开发

java Map的使用

2015-03-09 13:20 218 查看
import java.util.HashMap;

import java.util.Iterator;

import java.util.Set;

import java.util.Map.Entry;

public class HashMapTest {

    /**

     *Map集合需要保证键的唯一性

     *HashMap是通过HashSet原理保证键的一列不重复,所以存入键的对象需要正确重写hashCode和equals方法

     */

    public static void main(String[] args) {

        HashMap<Person, String> hm = new HashMap<Person, String>();

        hm.put(new Person("zhangsan", 19), "zhangsan");

        hm.put(new Person("wangwu", 21), "wangwu");

        hm.put(new Person("lisi", 32), "lisi");

        hm.put(new Person("zhangsan", 19), "zhangsan");

        hm.put(new Person("zhangsan", 21), "zhangsan");

        hm.put(new Person("wangwu", 21), "wangwu");

        

        System.out.println(hm.size());

        

        //遍历Map集合,两种方式,取键再取值,直接取键值对

        //1.调用keySet方法取所有的键组成的Set集合,遍历,根据每个键调用get方法取对应的值

        Set<Person> keys = hm.keySet();    //获得所有key

        Iterator<Person> iter = keys.iterator();

        while(iter.hasNext()) {

            Person key = iter.next();

            //根据键取值

            String value = hm.get(key);

            System.out.println(key + "---" + value);

        }

        

        //2.调用entrySet方法取所有的键值对组成的set集合,遍历,再调用getKey取键,调用getValue取值

        Set<Entry<Person, String>> entrys = hm.entrySet();

        for(Entry<Person, String> entry : entrys) {

            Person key = entry.getKey();

            String value = entry.getValue();

            System.out.println(key + "~~~" + value);

        }

    }

}

public class Person {

    private String name;

    private int age;

    public Person(String name, int age) {

        this.name = name;

        this.age = age;

    }

    

    public String getName() {

        return name;

    }

    

    public int getAge() {

        return age;

    }

    

    @Override

    public boolean equals(Object obj) {

        if(this==obj)

            return true;

        if(obj instanceof Person) {

            Person p = (Person) obj;

            if(this.name.equals(p.name) && this.age==p.age)

                return true;

        }

        return false;

    }

    

    @Override

    public int hashCode() {

        return this.name.hashCode()*31 + this.age;

    }

    

    public String toString() {

        return name + "@ " + age;

    }

    

    

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java map