map -- 11




1 2
概述上一篇日志中,我们介绍了 python 的字典与集合:本篇日志中,我们来介绍他们的内建函数与方法 内建工厂函数 -- dict、set、frozensetdict()dict 工厂函数被用来创建字典,下面的例子展示了 dict 方法的几种用法:>>> dict(zip(('x', 'y'), (1, 2))) {'y': 2, 'x': 1} >>> dict([['x', 1], ['y', 2]]) {'y': 2, 'x': 1} >>> dict([('xy'[i-1], i) for i in range(1,3)]) {'y': 2, 'x': 1} >>> dict(x=1, y=2) {'y': 2, 'x': 1} >>> dict8 = dict(x=1, y=2) >>> dict8 {'y': 2, 'x': 1} >>> dict9 = dict(**dict8) >>> dict9 {'y': 2, 'x': 1}  dict9 = dict(**dict8) 的方式并不推荐使用,
#读书笔记    #技术帖    #龙潭书斋    #python   

200x200


概述在此前 java 并发编程相关的日志中,我们简要介绍了 ThreadLocaljava 对象的数据共享与安全可是在这篇日志中,ThreadLocal 仅仅是

#技术帖    #技术分享    #源码    #java   
概述上一篇日志中,我们介绍了 guava 的 RangeSet 容器:区间集合 -- RangeSet本篇日志我们来介绍区间容器家族的另一个成员 -- RangeMapRangeSet 是一组区间的集合,然而有时,我们需要通过区间映射到一个值,也就是需要一个 map,他的 key 是 Range,value 是我们需要的值,这就是 RangeMap 的强大功能对于不同的时间段内,展示不同的文案等类似的功能,使用 RangeMap 将十分便捷 RangeMap 的实现类及创建方法RangeMap 的实现RangeMap 和 RangeSet 类似,拥有两个实现:TreeRangeMap -- 基于红黑树实现的拥有排序的 RangeMapImmutableRangeMap -- 不可变的 RangeMap 下面我们以 TreeRangeMap 为例来进行介绍 RangeMap 的创建方法TreeRangeMap 提供了 create 
#技术帖    #apache    #龙潭书斋    #java   
概述在前面的博文中,我们介绍了 guava 的 Multimap 容器Key 可重复的 Map -- MultimapMultimap 是一种键可重复出现的 Map 容器,可以看作是实现了 Map<K, List<V>> 功能的容器在实际的使用中,有时我们还需要 Map<K, Map<T, V>> 这样的结构,例如,我们的一个超市中有多个货架,货架上有水果,我们需要通过货架 ID、对应货架上的水果 ID 获取到某种水果的信息,这样的数据结构如果用 Map<K, Map<T, V>> 这样的容器来存储和表示就显得非常丑陋了Guava 提供的 Table 容器解决了这个问题Guava 的 Table 是一个三元组,每一条记录需要用两个 Key 进行索引,也可以看做是一个 Map<K, Map<T, V>> 结构,每一个 V 的确定都必须提供&nbs
#技术帖    #龙潭书斋    #容器    #java   
概述有时我们需要维护一个双向映射,也就说,有时我们需要一个 key-value 的集合的同时还需要一个 value-key 的集合,那么,为了解决这个问题,我们需要维护两个 Map:Map<Long, String> fruitIdToName = new HashMap<>(); Map<String, Long> fruitNameToId = new HashMap<>(); fruitIdToName.put(2L, "apple"); fruitIdToName.put(3L, "banana"); fruitNameToId.put("apple", 2L);  上面的代码维护了两个 HashMap,分别是水果 Id 到水果名称的映射,和水果名称到水果 Id 的映射然而,维护两个 HashMap 的成本是很高的,你会发现在例子中,我们将无法通过 fruitIdToName 中存在的 banana 值作为 key 查找到 fruitNameToId&n
#技术帖    #龙潭书斋    #java    #集合   
概述上一篇日志中,我们介绍了 Guava 的可重复 key 的 Set -- Multiset 类型元素可重复的 Set -- Multiset本篇日志中,我们就来介绍 Guava 提供的另一个容器,可重复 key 的 Map -- Multimap 假设我们需要经营一家超市,超市中有若干库区,我们创建一个水果类,其中有两个字段,分别是水果的名称和所在库区号,那么现在我们需要了解一批水果中,每个库区各有多少水果,分别是什么,那么我们就需要这样的代码:package com.techlog.test.testspring.service; import java.util.*; /** * Created by techlog on 2017/4/3. */ public class WorkMain { private final static List<Fruit> FRUITS = Arrays.asList(new Fruit("apple", 1), new Fruit("bnana", 1), new Fruit("
#技术帖    #龙潭书斋    #容器    #list   
概述此前我们曾经介绍过,java 提供了丰富的容器类来解决一组对象的管理问题:Collection 及其相关实现的容器简介及用法Map 简介及用法但是对于复杂的情况,jdk 提供的容器类还是显得有些不足,guava 引入了一系列新的集合类,来扩充 JDK 集合框架,令人欣慰的是,guava 的集合接口完全遵循了 jdk 的思想和理念 众所周知,jdk 的 Set 是一个继承自 Collection 的接口,用于实现不重复的元素的集合,但有时,我们是很需要一个值能够重复的 Set 的,最常见的需求就是我们需要集合中不重复的元素的集合,那么我们需要一个 Set,但是我们还需要知道集合中各个元素的出现次数,那么 Set 就无法做到了,仅适用 List 也是难以满足的,非要实现的话,代码的复杂度就会变得很高而不易于维护Guava 提供的 Multiset 解决了上述问题,简单地说,Multiset 提供了一个元素可重复的 Set,事实上,这在 C++ 的 STL 中早已有所提供,大概 
#技术帖    #龙潭书斋    #java    #jdk   

200x200


概述在此前的日志中,我们介绍了 java1.8 版本以前的 hashmap 源码及工作原理:java HashMap 源码解析java8 对 

#技术帖    #技术分享    #源码    #java   

200x200


HashMap 的基本成员Entry -- 内部类,存储 K、Vthreshold -- 容量达到该数字,则扩容loadFactor&nbs

#技术帖    #技术分享    #源码    #sourcecode   
1 2



京ICP备15018585号