Map映射—Java实现—LinkedHashMap、HashMap、TreeMap

映射是一种键值对存储数据结构。
Map接口和List不同的是Map并没有实现Collection接口。
映射数据结构有一个性质:一个键在映射中只出现一次,如果插入同一个键,那么这个键原来的值就会被覆盖。

HashMap是Java的散列表的实现,这个类包含一个内部类Entry,用来表示键值对,元素保存在Entry中。保存键时会调用hashCode方法。

TreeMap是Map接口的另一个实现,这个实现通过二叉树数据结构来实现Map接口。由于TreeMap基于自然排序保存键,因此不会使用hashCode方法,每一个插入TreeMap的元素都会重新调整树的平衡,因此搜索、删除以及后续的插入都可以达到最好的性能O(log n).

LinkedHashMap是Map的一个特殊实现,这个实现的工作方式和HashMap完全相同,因此检索的时间复杂度为O(1),但这个实现有一个特性,那就是键的遍历顺序和插入顺序是相同的。

如果要在多线程之间共享映射实例,那么应该使用ConcurrentHashMap实现。

看一下程序实现:

package map;

import java.util.*;

/**
 * DateTime: 2016/10/21 16:51
 * 功能:
 * 思路:
 */
public class MapDemo {
    public static void main(String[] args) {

        final Map<String,String> map=new HashMap<>();
        final Map<String,String> linkmap=new LinkedHashMap<>();
        final Map<String,String> treemap=new TreeMap<>();

        map.put("Y","YEN");  linkmap.put("Y","YEN"); treemap.put("Y","YEN");
        map.put("L","LEN");  linkmap.put("L","LEN"); treemap.put("L","LEN");
        map.put("A","AEN");  linkmap.put("A","AEN"); treemap.put("A","AEN");
        map.put("G","GEN");  linkmap.put("G","GEN"); treemap.put("G","GEN");
        map.put("F","FEN");  linkmap.put("F","FEN"); treemap.put("F","FEN");


        System.out.println("map:");
        Iterator iterator=map.entrySet().iterator();
        while ( iterator.hasNext() ){
            Map.Entry entry= (Map.Entry) iterator.next();
            System.out.println(entry.getKey()+" --> "+entry.getValue());
        }

        System.out.println("linkedmap:");
        Iterator linkiterator=linkmap.entrySet().iterator();
        while ( linkiterator.hasNext() ){
            Map.Entry entry= (Map.Entry) linkiterator.next();
            System.out.println(entry.getKey()+" --> "+entry.getValue());
        }

        System.out.println("treemap:");
        Iterator treeiterator=treemap.entrySet().iterator();
        while ( treeiterator.hasNext() ){
            Map.Entry entry= (Map.Entry) treeiterator.next();
            System.out.println(entry.getKey()+" --> "+entry.getValue());
        }
    }
}

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值