HashMap笔记

来源:互联网 发布:linux shell脚本编写 编辑:程序博客网 时间:2024/06/03 13:57

今天在项目中看别人的代码使用treeMap(),不知道为什么使用treeMap而不使用hashMap,因此搜了一下treeMap和hashMap。
这篇文章写的很详细
在此处记录一下自己的理解,现在理解很浅显,以后理解深刻之后再来补充。

HashMap在插入值hashMap.input()时按HashCode插入,因此存储时不是按插入的顺序,读取时也是按照hashCode读取。例如下面的例子,读取时是 [3 2 1 6 5 4](可能在不同的电脑上不一样?)。但是因为通过hashCode索引,读的速度非常快,在对读出的数据的顺序没要求时可以使用HashMap。
TreeMap读出的是排好序的数据

public class TestHashMap {    public static void main(String args[]) {        Map<String, Object> hashMap = new HashMap<>();        hashMap.put("1","1");        hashMap.put("2","2");        hashMap.put("3","3");        hashMap.put("4","4");        hashMap.put("5","5");        hashMap.put("6","6");        Iterator<String> iterator = hashMap.keySet().iterator();        while(iterator.hasNext()) {            Object key = iterator.next();            System.out.println("hashMap.get(key) is " + hashMap.get(key));        }    }}

hashMap put通过key值的hash值来确定位置,treeMap根据key值的hash值来排序,linkedMap按照put的先后顺序确定位置。
http://howtodoinjava.com/core-java/collections/how-hashmap-works-in-java/

需要注意上面这段代码中如何遍历hashMap,由keySet()得到hashMap中key的Set view,通过iterator接口遍历key值,在hashMap中取得相应value值

============================
java7 hashMap API文档
http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
tips:

  • hashMap.get(key) == null 可能是value ==null,可通过containsKey来区分这两中情况

  • 一个HashMap的实例有两个参数:容量和负载因子,通常负载因子是0.75

0 0
原创粉丝点击