java中的HashMap和TreeMap

Wesley13
• 阅读 805

HashMap和TreeMap两者都是Map,java中的Map以键值对来存储数据,通过键--key来索引值--value。

HashMap通过hashcode对其内容进行快速查找,其结果时无序的;TreeMap中的所有元素都默认进行了排序,所以当需要一个有序的结果时,使用TreeMap是比较方便的。

具体的定义和遍历方法,可以看下面的例子:

package com.yeetrack.java.test;
              
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
              
/**
 * Created with IntelliJ IDEA.
 * User: youthflies
 * Date: 13-2-22
 * Time: 下午4:51
 * To change this template use File | Settings | File Templates.
 */
public class TestMap
{
    public static void main(String[] args)
    {
        HashMap hashmap = new HashMap<String, String>();
        hashmap.put("username", "youthflies");
        hashmap.put("age", "14");
        hashmap.put("password", "youthflies");
        //entrySet返回hashmap中包含的映射关系的 Set 视图。也是一个Set,而Set中每个元素是内部类Map.Entry。
        Iterator iterator = hashmap.entrySet().iterator();
        while(iterator.hasNext())
        {
            //获取Set视图中的每一项
            Map.Entry entry = (Map.Entry)iterator.next();
            System.out.println(entry.getKey()+"--->"+entry.getValue());
        }
        //keyset是获取hashmap中的key的视图,只包含key,没有value
        Iterator iter = hashmap.keySet().iterator();
        while (iter.hasNext())
        {
            Object object = iter.next();
            //hashmap.get()再通过key来获取value
            System.out.println(object+"--->"+hashmap.get(object));
        }
              
        //treemap会对key自动进行自然排序
        TreeMap treeMap = new TreeMap();
        treeMap.put("username", "youthflies");
        treeMap.put("age", 14);
        treeMap.put("password", "youthflies");
              
        Iterator iterator2 = treeMap.entrySet().iterator();
        while(iterator2.hasNext())
        {
            Map.Entry entry = (Map.Entry)iterator2.next();
            System.out.println(entry.getKey()+"--->"+entry.getValue());
        }
              
    }
}

上面的输出结果为:

username--->youthflies
age--->14
password--->youthflies
username--->youthflies
age--->14
password--->youthflies
//下面是treemap输出
age--->14
password--->youthflies
username--->youthflies

易踪网(yeetrack.com)

点赞
收藏
评论区
推荐文章
HashMap的理解
HashMap在Map.Entry静态内部类实现中存储keyvalue对。HashMap使用哈希算法,在put和get方法中,它使用hashCode()和equals()方法。当我们通过传递keyvalue对调用put方法的时候,HashMap使用KeyhashCode()和哈希算法来找出存储keyvalue对的索引。Entry存储在LinkedL
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java中map接口hashMap以及Enty之间的用法和关系
java中map接口hashMap以及Enty之间的转换首先说的是map接口:Map提供了一种映射关系,其中的元素是以键值对(keyvalue)的形式存储的,能够实现根据key快速查找value;建(key值)不可重复,value值可以重复,一个value值可以和很多key值形成对应关系,每个建最多只能映射到一个值。Ma
Wesley13 Wesley13
3年前
Java8的HashMap笔记摘要
问题例子: HashMap是不是有序的?不是有序的。有没有有序的Map实现类呢?有TreeMap和LinkedHashMap。TreeMap和LinkedHashMap是如何保证它的顺序的? TreeMap是通过实现SortMap接口,能够把它保存的键值对根据key排序,基
Stella981 Stella981
3年前
HashMap中神奇的h & (length
众所周知,HashMap是基于Hash表的Map接口实现,HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。HashMap中主要是通过key的hashCode来计算hash值的,只要hashCode相同,计算出来的hash值就一样。但是知道了Hash值之后,又是怎么确定出key在数组中的索引呢?根据源码得知如下方法static
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Stella981 Stella981
3年前
HashMap 怎么 hash?又如何 map?
HashMap 是Java中Map的一个实现类,它是一个双列结构(数据链表),这样的结构使得它的查询和插入效率都很高。HashMap允许null键和值,它的键唯一,元素的存储无序,并且它是线程不安全的。!(https://oscimg.oschina.net/oscnet/24e81018b69298cf434a8eb39682070
Stella981 Stella981
3年前
HashMap1.7和1.8,红黑树原理!
jdk1.7概述HashMap基于Map接口实现,元素以键值对的方式存储,并允许使用null键和null值,但只能有一个键作为null,因为key不允许重复,另外HashMap不能保证放入元素的数据,它是无序的,和放入的顺序并不能相同,HashMap是线程不安全的。继承关系publicclassH
Wesley13 Wesley13
3年前
Java集合之Map接口
Map使用键值对来存储数据,将键映射到值对象,一个映射不能包含重复的键,每一个键最多只能映射到一个值。Map接口的具体实现类:HashMap,Hashtable,TreeMap,LinkedHashMap  1)HashMap  基于哈希表(哈希表学习地址)的Map接口实现。允许使用null值和null键,不保证映射的顺序,特别是不保证顺序恒
Stella981 Stella981
3年前
HashMap 的底层实现原理
HashMap是一个用于存储KeyValue键值对的集合,每一个键值对也叫做Entry。这些个Entry分散存储在一个数组当中,这个数组就是HashMap的主干。HashMap数组每一个元素的初始值都是Null。 !(https://oscimg.oschina.net/oscnet/8495d30fe00a2865dd74088d2