首页 > 编程语言 >【Java】Map 实现类

【Java】Map 实现类

时间:2022-11-11 12:04:21浏览次数:39  
标签:11 Map Java hashMap 实现 treeMap put entry linkedHashMap


hashmap:遍历时顺序无法保证

linkedhashmap:遍历时按照插入顺序

treemap:遍历时按照大小顺序


linkedhashmap实现上是继承了hashmap,多了一个双向的链表记录插入顺序,重写了迭代器,基于这个双向链表。

treemap是在内部重定义了entry,加上了left,right,parent变量,维持了一个搜索二叉树的结构。本质上,treemap已经不是map的结构了,map主要的特性是随机存取,而treemap本质上是一个二叉搜索树,更具体的是是一个平衡的二叉所搜树(红黑树和平衡二叉搜索树还不是一个概念),查看treemap的源码,发现是实现了Navigable的接口,里面的方法除了get,put外是找前驱和后继的,这正是搜索树干的事情,接口内容大大不同,前两者还是实现的map的接口,做的是随机存取的事情。

package ThreadTest;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class Test9 {

public static void main(String[] args) {
Map<Integer, String> hashMap = new HashMap<>();
hashMap.put(10, "10");
hashMap.put(11, "11");
hashMap.put(2, "2");
hashMap.put(4, "4");
hashMap.put(9, "9");

for(Entry<Integer, String> entry : hashMap.entrySet()){
System.out.println(entry);
}

Map<Integer, String> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put(10, "10");
linkedHashMap.put(11, "11");
linkedHashMap.put(2, "2");
linkedHashMap.put(4, "4");
linkedHashMap.put(9, "9");

for(Entry<Integer, String> entry : linkedHashMap.entrySet()){
System.out.println(entry);
}

Map<Integer, String> treeMap = new TreeMap<>();
treeMap.put(10, "10");
treeMap.put(11, "11");
treeMap.put(2, "2");
treeMap.put(4, "4");
treeMap.put(9, "9");

for(Entry<Integer, String> entry : treeMap.entrySet()){
System.out.println(entry);
}

}

}






标签:11,Map,Java,hashMap,实现,treeMap,put,entry,linkedHashMap
From: https://blog.51cto.com/u_15873544/5844106

相关文章

  • 【Java】 Set实现类
    Set是collection的子接口,对应数学中的集合。与list的最主要的区别是,set无法通过索引取值,因为set是无序的。set还有一个特性是唯一性,不能存相同的元素。第一个实现类是hashse......
  • Go实现栈与队列基本操作
    @目录一前言二实现栈与队列基本操作2.1栈基本操作2.2队列基本操作三用栈实现队列3.1理论3.2算法题3.3思路3.4代码部分四用队列实现栈4.1理论4.2算法题4.3思路......
  • 【Java】垃圾回收机制 GC
    GC是java中比较有特色的技术,减轻了程序员的负担。当然也是面试中的高频话题。对于垃圾回收,首先要解决的是找出哪些对象是需要回收的。第一个方法是计算引用数目,实现比较简单......
  • springboot 引入外部包的坑Lookup method resolution failed; nested exception is ja
    手动引入jar包<dependency><groupId>com.allinpay.sdk</groupId><artifactId>top-sdk-java</artifactId><version>1.0.5</......
  • java
    Java是一种编程语言和计算平台,由SunMicrosystems在1995年首次发布。它从微末起步,逐渐发展为当今数字世界中很大一部分资产所依赖的基础,是用于构建许多服务和应用程序......
  • Jenkins + Docker + Spring Boot实现自动化部署
    环境:CentOS7+Git(Gitee)实现步骤:在Docker安装Jenkins,配置Jenkins基本信息,利用Dockerfile和Shell脚本实现项目自动拉取打包并运行。一、安装Docker1、下载......
  • Java之找不到或无法加载主类
    IDEA报错:错误:找不到或无法加载主类。解决方法1:原因:未能成功编译。尝试:菜单栏Build->RebuildProdject 解决方法2:原因:IDEA缓存问题。尝试:菜单栏File->Invalida......
  • Android实战简易教程-第四十七枪(ListView多选-实现点餐系统)
    一般在外卖的选单中常常会用到ListView的多选,大家可以改进后加入自己的项目中。下面看一下代码:一、代码1.main.xml:(由一个ListView和一个Button组成)<?xmlversion="1.0"enc......
  • Android实战简易教程-第四十八枪(App引导页面效果实现)
    经常使用APP的童鞋会发现,第一次进入APP会有引导页面,里面可以放一些APP的使用介绍或其他信息等等,下面我们研究一下如何实现这个功能,增加APP的体验。一、自定义控件继承ViewGr......
  • Java--comparator接口与Comparable接口的区别
    1.Comparator和Comparable相同的地方他们都是java的一个接口,并且是用来对自定义的class比较大小的,什么是自定义class:如publicclassPerson{Stringname;int......