读书人

黑马软件工程师 java 集合框架(二)

发布时间: 2013-02-19 11:11:40 作者: rapoo

黑马程序员 java 集合框架(二)

----------android培训、java培训、java学习型技术博客、期待与您交流! ----------

Map接口是一个独立的接口,没有继承Collection接口;接口描述了从不重复的键到值的映射。

Map接口中的方法分为五类:查询,修改,块操作,提供视图,比较和希哈

更适合在Map中插入、删除和定位元素。

使用HashMap要求添加的键类明确定义了hashCode()实现。

TreeMap类

适合按顺序遍历键。

有了TreeMap实现,添加到映射的元素一定是可排序的。

实例:

public class Demo {        public static void main(String[] args) throws Exception {        String[] arg={"zhang","jin","yu","is","zhang","yun","yuan's","borather","and","is","wang","qi's","husband"};        Map map=new HashMap<>();        Integer ONE=new Integer(1);        for(int i=0, n=arg.length; i<n; i++){        String key=arg[i];        Integer frequency=(Integer)map.get(key);        if(frequency==null){        frequency=ONE;        }else{        int value=frequency.intValue();        frequency=new Integer(value+1);        }        map.put(key, frequency);        }        System.out.println(map);        Map sorted_map=new TreeMap(map);        System.out.println(sorted_map);        }}运行结果:{jin=1, is=2, yu=1, qi's=1, yuan's=1, zhang=2, yun=1, borather=1, husband=1, wang=1, and=1}{and=1, borather=1, husband=1, is=2, jin=1, qi's=1, wang=1, yu=1, yuan's=1, yun=1, zhang=2}结果分析:当map中已经有一个Key为“zhang”时,再往其中添加Key值为“zhang”的key-value对会覆盖之前的。 

为了优化HashMap空间的使用,可以调优初始容量和负载因子。这个TreeMap没有调优选项,因为该树总处于平衡状态(和Set中一样)。

AbstractMap(抽象类)

AbstrctMap类也覆盖了equals()hashCode()方法,以确保两个相等映射返回相同的散列码。如果两个映射大小相等、包含同样的键且每个键在这两个映射中对应的值都相同,则这两个映射相等。按定义,映射的散列码是映射元素散列码的总和,其中每个元素是Map.Entry接口的一个实现。因此,不论映射内部顺序如何,两个相等映射会报告相同的散列码。


读书人网 >编程

热点推荐