集合类概述3

Map集合

map集合没有继承Collection接口,其提供的是key到value的映射。map中不能包含相同的key,每个key只能映射一个value。key还决定了存储对象在映射中的位置,但不是由key对象本身决定的,而是通过一种“散列技术”进行处理,产生一个散列码的整数值,散列值通常做一个偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而确定存储对象在映射中的存储位置。map集合包括map接口的所有实现类。

map接口

map接口提供了将key映射到值得对象。一个映射不能包含重复的key,每个key最多只能映射到一个值。map接口中同样提供了集合的常用方法,如下:

方法                                                                   功能描述

put(K key, V value)                                      向集合中添加指定的key与value的映射关系

containsKey(Object key)                             如果此映射包含指定key的映射关系,则返回true

containsValue(Object value)                       如果此映射将一个或多个key映射到指定值,则返回true

get(Object key)                                           如果存在指定的key对象,则返回该对象对应的值,否则返回null

keySet()                                                       返回该集合中的所有key对象形成的Set集合

values()                                                        返回该集合中所有值形成的Collection集合

public class Map集合 {
    public static void main(String[] args) {
        Map<String ,String>map = new HashMap<>();//创建Map实例
        map.put("01","李同学");//向集合中添加对象
        map.put("02","张同学");
        map.put("03","周同学");
        Set<String>set = map.keySet();//构建Map集合中key对象的集合
        Iterator<String> iterator = set.iterator();//创建集和迭代器
        System.out.println("key集合中的元素");
        while (iterator.hasNext()){
            System.out.println(iterator.next());//遍历集合
        }
        Collection<String>collection = map.values();//构建map集合中所有values值集合
        iterator = collection.iterator();
        System.out.println("values集合中的元素");
        while (iterator.hasNext()){//遍历集合
            System.out.println(iterator.next());
        }
    }
}
结果:



Map接口的实现类

Map接口常用的实现类有HashMap和TreeMap。建议使用HashMap类实现Map集合,因为HashMap类实现的Map集合添加和删除映射关系效率更高。HashMap是基于哈希表的Map接口的实现,HashMap通过哈希码对其内的映射关系进行快速查找;而TreeMap中的映射关系存在一定的顺序,如果希望Map集合中的对象也存在一定的顺序,应该使用TreeMap类实现Map集合。

HashMap类是基于哈希表的Map接口的实现此实现提供所有可选的映射操作,并允许使用null值和null键,但必须报证键的唯一性。HashMap通过哈希表对其内部的映射关系进行快速查找。此类不保证映射的顺序,特别是它不保证顺序恒久不变

TreeMap类不仅实现了Map接口,还实现了java.util.SortedMap接口,因此,集合中的映射关系具有一定的顺序。但在添加、删除和定位映射关系时,TreeMap类比HashMap类性能差

由于TreeMap类实现的Map集合中的映射关系是根据键值对象按照一定的顺序排列的,因此不允许键值对象时null

可以通过HashMap类创建Map集合,当需要顺序输出时,再创建一个完成相同映射关系的TreeMap类实例

 
 
public class MapTest {
    public static void main(String[] args) {
        Map<String,String>map = new HashMap<>();//由hashMap实现的Map对象
        Emp emp = new Emp("007","零零发");
        Emp emp1 = new Emp("008","零零发");
        Emp emp2 = new Emp("009","零零九");
        map.put(emp.getE_id(),emp.getE_name());//创建Emp对象
        map.put(emp1.getE_id(),emp.getE_name());
        map.put(emp2.getE_id(),emp2.getE_name());
        Set<String>set = map.keySet();//获取Map集合中的key对象集合
        Iterator<String>iterator = set.iterator();
        System.out.println("HashMap类实现的map集合,无序:");
        while (iterator.hasNext()){//遍历集合
            String string = iterator.next();
            String name = map.get(string);
            System.out.println(string+""+name);
        }
        TreeMap<String,String>treeMap = new TreeMap<>();//创建TreeMap集合
        treeMap.putAll(map);//向集合中添加元素
        Iterator<String>iterator1 = treeMap.keySet().iterator();
        System.out.println("TreeMap类实现的map集合,键对象升序:");
        while (iterator1.hasNext()){//遍历TreeMap集合对象
            String string = iterator1.next();//获取集合中的所有key对象
            String name = treeMap.get(string);//获取集合中的所有values值
            System.out.println(string+""+name);
        }
    }
}
public class Emp {
    private String e_id;
    private String e_name;

    public Emp(String e_id, String e_name) {
        this.e_id = e_id;
        this.e_name = e_name;
    }

    public String getE_id() {
        return e_id;
    }

    public void setE_id(String e_id) {
        this.e_id = e_id;
    }

    public String getE_name() {
        return e_name;
    }

    public void setE_name(String e_name) {
        this.e_name = e_name;
    }
}






猜你喜欢

转载自blog.csdn.net/qq_41934990/article/details/80200381