treemap

Java集合:整体结构

会有一股神秘感。 提交于 2020-08-11 14:10:10
一、Java中集合   Java中集合类是Java编程中使用最频繁、最方便的类。集合类作为容器类可以存储任何类型的数据,当然也可以结合泛型存储指定的类型(不过泛型仅仅在编译期有效,运行时是会被擦除的)。集合类中存储的仅仅是对象的引用,并不存储对象本身。集合类的容量可以在运行期间进行动态扩展,并且还提供很多很方便的方法,如求集合的并集、交集等。 二、集合类结构   Java中的集合包含多种数据结构,如链表、队列、哈希表等。从类的继承结构来说,可以分为两大类,一类是继承自Collection接口,这类集合包含List、Set和Queue等集合类。另一类是继承自Map接口,这主要包含了哈希表相关的集合类。下面我们看一下这两大类的继承结构图: 1、List、Set和Queue 图中的绿色的虚线代表实现,绿色实线代表接口之间的继承,蓝色实线代表类之间的继承。    (1)List:我们用的比较多List包括ArrayList和LinkedList,这两者的区别也很明显,从其名称上就可以看出。ArrayList的底层的通过数组实现,所以其随机访问的速度比较快,但是对于需要频繁的增删的情况,效率就比较低了。而对于LinkedList,底层通过链表来实现,所以增删操作比较容易完成,但是对于随机访问的效率比较低。 我们先看下两者的插入效率: 1 package com.paddx.test

ECharts介绍

一世执手 提交于 2020-08-11 07:21:20
ECharts介绍 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求 官网 https://echarts.apache.org/zh/index.html 特性 丰富的可视化类型 : 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。 多种数据格式无需转换直接使用 : 内置的 dataset 属性(4.0+)支持直接传入包括二维表,key-value 等多种格式的数据源,此外还支持输入 TypedArray 格式的数据。 千万数据的前端展现 : 通过增量渲染技术(4.0+),配合各种细致的优化,ECharts 能够展现千万级的数据量。 移动端优化 : 针对移动端交互做了细致的优化,例如移动端小屏上适于用手指在坐标系中进行缩放、平移。 PC 端也可以用鼠标在图中进行缩放(用鼠标滚轮)、平移等。 多渲染方案,跨平台使用 : 支持以 Canvas、SVG(4.0+)、VML 的形式渲染图表。 深度的交互式数据探索 :

Java知识回顾-基础知识(4)

喜夏-厌秋 提交于 2020-08-11 05:18:20
集合概述 集合架构图 Collection集合主要有List和Set两大接口 List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。 Set:无序(存入和取出顺序有可能不一致),不可以存储重复元素。必须保证元素唯一性。 Iterator Iterator接口,用于遍历集合元素的接口。 在Iterator接口中定义了三个方法: 修饰与类型 方法与描述 boolean hasNext() 如果仍有元素可以迭代,则返回true。 E next() 返回迭代的下一个元素。 void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 使用Iterator迭代器进行删除集合元素,则不会出现并发修改异常 List List是元素有序并且可以重复的集合。 List的主要实现:ArrayList, LinkedList, Vector。 常用方法 ArrayList、LinkedList、Vector 的区别: ArrayList LinkedList Vector(了解) 底层实现 数组 双向链表 数组 同步性及效率 不同步,非线程安全,效率高,支持随机访问 不同步,非线程安全,效率高 同步,线程安全,效率低 特点 查询快,增删慢 查询慢,增删快 查询快,增删慢 默认容量 10 / 10 扩容机制 int

Java操作Redis之Jedis用法详解

大兔子大兔子 提交于 2020-08-11 01:45:11
Redis(Remote Dictionary Server,远程数据字典服务器)是一个开源的高性能内存数据库,常用作缓存服务器使用,也做消息队列使用。因其高性能、丰富的数据类型、可扩展等特性受开发者青睐,这里介绍在java中使用Jedis操作Redis的基本用法。 1. 字符串String。 package com.zws.redis.examples; import java.util.concurrent.TimeUnit; import redis.clients.jedis.Jedis; public class RedisString { public static void main(String[] args) throws InterruptedException { String host = "192.168.137.131"; int port = 6379; String password = "redis"; Jedis jedis = new Jedis(host, port); jedis.auth(password); jedis.ping(); jedis.set("name", "张三"); //设置 jedis.set("age", "23"); String name = jedis.get("name");//获取 String age

Java编程技术之浅析Java容器技术

↘锁芯ラ 提交于 2020-08-09 14:57:44
Java容器 集合是一种存储数据的容器,是Java开发中使用最频繁的对象类型之一. 或许提起Collection,都会第一时间意识到List和Set以及Map等相关关键词。因为这几乎是我们日常开发里接触最多和遇见最频繁的,以及与数据处理交互最多的Java对象类型。换句话说,就是我们与数据进行处理的数据对象存储模型。但是: List->[AbstractList,ArrayList,AbstractSeaquentialList,LinkedList] Set->[AbstractSet,HashSet,SortedSet,TreeSet,LinkedHashSet] Map->[AbstractMap,SortedMap,TreeMap,HashMap,LinkedHashMap,ConcurrentHashMap] Collection容器 Collection容器包含List和Set以及Queue子容器。 List接口 List接口的实现类主要有:ArrayList、LinkedList、Stack以及Vector等 ArrayList[线程不安全] ArrayList-uml结构图: LinkedList LinkedList-uml结构图: Stack Stack-uml结构图: Vector Vector-uml结构图: Set容器 Set接口的实现类主要有

集合类Map底层数据结构总结

喜欢而已 提交于 2020-08-09 09:58:04
3.4.1 hash map 整体框架是数组结构,每一个位置储存同hashcode的链表 与j7对比,j8变更的是,储存的链表改成红黑树,从On时间复杂度降低至Ologn 3.4.2 concurrentHashMap 不可扩容数组储存16个segment,每个sement为线程安全的数组,每一个数组类似hash map,数组的位置储存链表。 因此segment也被称为分段锁。合起来导致全局线程安全 因此,并发数最多是16个(并发的操作位置在不同的segment上) 3.4.3HashTable 遗留下的类,继承dictionary类,线程安全的,但没有CHM快,因为CHM有分段锁。线程不安全可用HM替代 3.4.3 TreeMap 加入了排序功能,迭代器,遍历的结果是排序后的 3.4.4 LinkedHashMap 加入了保有插入顺序的功能;迭代器,遍历的结果是排序后的 来源: oschina 链接: https://my.oschina.net/u/4353069/blog/4405901

Java 集合排序策略接口 Comparator

≡放荡痞女 提交于 2020-08-09 02:25:13
1. 前言 最近用到了集合排序(基于 Java 8)。现在我能用 Stream 的就用 Stream ,真香!排序可以这么写: List<People> peoples = new ArrayList<>(); // 中间省略 // 按照年龄从小到大排序 peoples.sort(Comparator.comparing(People::getAge)); 这里排序用到了一个关键接口 java.util.Comparator 。排序比较作为业务中经常出现的需求,我们有必要研究一下这个接口。 2. Comparator 概念 Comparator 是一个函数式接口。它经常用于没有天然排序的集合进行排序,如 Collections.sort 或 Arrays.sort 。或者对于某些有序数据结构的排序规则进行声明,如 TreeSet 、 TreeMap 。也就是该接口主要用来进行集合排序。 3. Comparator 中的方法 Comparator 作为一个函数式接口只有一个抽象方法,但是它有很多的默认方法,我们来认识一下这些方法们。 3.1 compare 抽象方法 作为 Comparator 唯一的抽象方法, int compare(T o1,T o2) 比较两个参数的大小, 返回负整数,零,正整数 ,分别代表 o1<o2 、 o1=o2 、 o1>o2 ,通常分别返回 -1 、

海南即拼商城系统开发(青岛即拼)

天涯浪子 提交于 2020-08-08 15:43:04
我们在扩充HashMap的时候,不需要像JDK1.7的实现那样重新计算hash,只需要看看原来的hash值新增的那个bit是1还是0就好了,是0的话索引没变,是1的话索引变成“原索引+oldCap”,可以看看下图为16扩充为32的resize示意图: 4. 既然存在扩容,是否存在缩容 没有缩容机制,没有看到与resize()对应方法。 5. HashMap和HashTable、HashSet、LinkedHashMap Hashtable: Hashtable是遗留类 ,很多映射的常用功能与HashMap类似,不同的是它承自Dictionary类,并且是线程安全的,任一时间只有一个线程能写Hashtable,并发性不如ConcurrentHashMap,因为ConcurrentHashMap引入了分段锁。Hashtable不建议在新代码中使用,不需要线程安全的场合可以用HashMap替换,需要线程安全的场合可以用ConcurrentHashMap替换。 海南即拼商城系统开发(189薇-8884性-2527)青岛即拼商城系统开发,即拼商城系统开发,即拼商城系统开发模式 (内容忽视,详情+v) LinkedHashMap:LinkedHashMap是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的

HashMap初步解析

*爱你&永不变心* 提交于 2020-08-08 05:06:58
参考 美团技术团队-Java 8系列之重新认识HashMap 一些Map的比较 HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要满足线程安全,可以用 Collections的synchronizedMap方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap。 Hashtable:Hashtable是遗留类,很多映射的常用功能与HashMap类似,不同的是它承自Dictionary类,并且是线程安全的,任一时间只有一个线程能写Hashtable,并发性不如ConcurrentHashMap,因为ConcurrentHashMap引入了分段锁。Hashtable不建议在新代码中使用,不需要线程安全的场合可以用HashMap替换,需要线程安全的场合可以用ConcurrentHashMap替换。 LinkedHashMap:LinkedHashMap是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的

ECharts介绍

蓝咒 提交于 2020-08-08 04:00:45
ECharts介绍 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求 官网 https://echarts.apache.org/zh/index.html 特性 丰富的可视化类型 : 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。 多种数据格式无需转换直接使用 : 内置的 dataset 属性(4.0+)支持直接传入包括二维表,key-value 等多种格式的数据源,此外还支持输入 TypedArray 格式的数据。 千万数据的前端展现 : 通过增量渲染技术(4.0+),配合各种细致的优化,ECharts 能够展现千万级的数据量。 移动端优化 : 针对移动端交互做了细致的优化,例如移动端小屏上适于用手指在坐标系中进行缩放、平移。 PC 端也可以用鼠标在图中进行缩放(用鼠标滚轮)、平移等。 多渲染方案,跨平台使用 : 支持以 Canvas、SVG(4.0+)、VML 的形式渲染图表。 深度的交互式数据探索 :