Map集合基础

来源:互联网 发布:软件测试课程大纲 编辑:程序博客网 时间:2024/06/16 16:44
  1. map接口存储的是键与值之间的映射关系,简单理解就是一存就会存一组(Key与Value两个对象)。比如学号与姓名: Map<0002,张三>

  2. 键是具有唯一性的,如果集合中已经存在0002学号,那么再次存入一个0002键,它的值会被存入并且覆盖掉旧值,该集合中的0002键始终只会指向一个值,不会指向多个。不过多个键的值相同是有可能的。

  3. map中的方法相对还是较少的,增删改查等等基本方法。
    3.1 增,改: put(K key, V value) (K,V为泛型,任何对象均可添加)
    3.2 删: remove(Object key) 根据Key删除一条映射关系,clear( ) 删除所有
    3.3 查:containsKey(Object key),containsValue(Object value) 判断集合中是否含有该键或者值,返回为boolean

  4. Map接口有两个常用实现类,TreeMap和HashMap,顾名思义,一个为存储方式为二叉树,另一个为哈希表 。

  5. 取出map集合中的元素,有两种方法,entrySet( ) 和 keySet( ),用代码解释。enrtySet( )较为复杂点,返回的是一个Map.Entry关系类,它包含了map集合中的映射关系,提供了getKey( )和getValue( )方法,可以很方便的获取到键和值。

import java.util.*;class HashMapDemo2 {    public static void main(String[] args) {        Map<Student,String> map = new HashMap<Student,String>();        map.put(new Student("zhangsan",18),"Hangzhou");        map.put(new Student("lisi",20),"Wuhan");        map.put(new Student("lisi",22),"Beijing");        map.put(new Student("wangwu",25),"Nanjing");        map.put(new Student("zhaoliu",30),"Shanghai");        map.put(new Student("zhaoliu",30),"Shanghai");        // 1. Map集合的keySet()方法,返回为Set,存储了Map中的所有键,此处为Student        Set<Student> set = map.keySet();        Iterator<Student> i2 = set.iterator();        while (i2.hasNext()) {            Student stu = i2.next();            String addr = map.get(stu);            System.out.println(stu + "..." + addr);        }        // 2. Map集合的entrySet()方法,返回也是Set        //    但是存储的是一个特殊的泛型Map.Entry<K,V>         //    这是Map中的一个内部类,用来描述Map中键,值之间映射关系.        Set<Map.Entry<Student, String>> m = map.entrySet();        Iterator<Map.Entry<Student,String>> i = m.iterator();        while (i.hasNext()) {            Map.Entry<Student, String> me = i.next();            System.out.println(me.getKey().getName() + " " + me.getKey().getAge() + " " + me.getValue());        }    }}class Student implements Comparable<Student>{    private String name;    private int age;    Student(String name, int age) {        this.name = name;        this.age = age;    }    public String getName() {        return name;    }    public int getAge() {        return age;    }    public void setName(String name) {        this.name = name;    }    public void setAge(int age) {        this.age = age;    }    public int hashCode() {            return name.hashCode() + age * 19;    }    public boolean equals(Object obj) {        if (!(obj instanceof Student)) {            return false;        } else {            Student s = (Student) obj;            return this.name.equals(s.name) && this.age == s.age;        }    }    public int compareTo (Student s) {        int num = this.age - s.age;        if (num == 0) {            return this.name.compareTo(s.name);        }        return num;    }    public String toString() {        return name + "---" + age;      }}
原创粉丝点击