hashmap相关内容
所以我在这里拥有的是一个 java 程序,它处理大量数据并将其存储到对象中(主要是哈希映射).在运行时间的某个时间点,数据变得无用,我需要丢弃,以便释放一些内存. 我的问题是丢弃这些数据以进行垃圾收集的最佳行为是什么? 我已经尝试了 map.clear(),但是这不足以清除地图分配的内存. 编辑(添加我尝试过的替代方案) 我也尝试过 system.gc() 来强制垃圾收集器
..
你知道以下面试问题的解决方案吗? 为电话簿设计一个数据结构,它可以安全且有效地按名称搜索数字,也可以按数字搜索名称. 详情: 在 stackoverflow 上找到的解决方案都是关于哈希表的,但是,我必须为此构建 2 个哈希表,这需要两倍的空间. 如何以一种节省时间和空间、类型安全的方式仅使用一个数据结构? 解决方案 这种数据结构被称为多索引容器.它们在大多数编程语
..
如果您知道,请描述原因.我用谷歌搜索了它,但没有找到解释清楚的答案. 当您的 hashCode 为负数时,是否使存储桶的索引为正数? 解决方案 对于HashMap,存储Map的条目的数组中的索引是这样计算的(其中h 由 key 的 hashCode 计算得出): static int indexFor(int h, int length) {返回 h &(长度-1);} 其中 l
..
从技术上讲,根据我在这里阅读的帖子,哈希表在最坏的情况下确实是 O(n) 时间查找.但我不明白内部机制如何保证平均为 O(1) 时间. 我的理解是,给定一些 n 个元素,理想情况是有 n 个桶,这会导致 O(1) 空间.这就是我卡住的地方.假设我想查找一个键是否在字典中,这肯定需要 O(n) 时间.那么,当我想通过使用其键的哈希值来搜索元素是否在哈希表中时,为什么会有所不同呢?简而言之,使用
..
我正在使用 Jackson 反序列化一个 json 文件(我用 jackson 序列化了该文件).json 是一个简单的 HashMap,但是当我尝试反序列化时映射器会抱怨. org.codehaus.jackson.map.JsonMappingException:无法从 START_ARRAY 令牌中反序列化 java.util.HashMap 的实例 我的序列化 HashMap 字符串.
..
我应该在另一个 HashMap 中创建一个 HashMap 如下所示,它可以根据键将值存储在内部 HashMap 中运行时外层HashMap 即程序所需的输出应该是格式 { 1 = {11 = "aaa",15 = "bbb"}, 2 = {13 = "ccc", 14 = "ddd"} } 其中 1,2 是 Outer HashMap 的键值. 下面是为其提供的代码有没有更好的
..
我正在尝试学习 C++ 映射.只是想知道 STL map 的实现.我读到它采用二叉搜索树. STL 中是否有哈希表的实现? STL map 究竟是如何存储键值对的? 解决方案 典型的 STL 实现基于红黑树.C++ TR1 提供使用哈希表实现的 std::tr1::unordered_map.Boost 还提供了一个 unordered_map 哈希表实现. C++11
..
我有一个类,我在 updateLiveSockets() 方法内每 30 秒从单个后台线程填充地图 liveSocketsByDatacenter ,然后我有一个方法 getNextSocket() 将被多个读取器线程调用以获取可用的活动套接字,该套接字使用相同的映射来获取此信息. 公共类 SocketManager {私有静态最终随机随机=新随机();private final Schedul
..
我只是想知道,如果 HashMap 的键是可变的会发生什么,下面的测试程序证明了这一点,我无法理解 equals 和 hashCode 方法何时返回true 和相同的值,为什么 hashmap.containsKey 返回 false. 公共类 MutableKeyHashMap {公共静态无效主要(字符串[]a){HashMapmap = new HashMap
..
我需要的是一个允许多个键访问单个对象的集合. 我需要对此对象进行频繁的更改. 它还必须对 500k+ 个条目有效. 解决方案 java.util.Map 的任何实现都可以做到这一点 - 没有限制 在单独的键下可以添加特定值多少次: Mapm = new HashMap();m.put("你好", 5);m.put("世界", 5);System.out.printl
..
在 Hashmap 中,提供的键的哈希码用于将值放置在哈希表中.在哈希集中,对象哈希码用于将值放置在底层哈希表中.也就是说,hashmap 的优点是你可以灵活地决定你想要什么作为 key,这样你就可以做这样的好事. 地图玩家 = 新的 HashMap(); 这可以将诸如玩家姓名之类的字符串映射到玩家本身. 我的问题是,当键的 Hashcode 发生变化时,查找会发生什么变化. 我希
..
我正在寻找一个无 monad 的常量访问查询 O(1) 关联数组. 考虑假设的类型: 数据 HT k v = ??? 我想构造一个不可变结构一次: fromList :: Foldable t, Hashable k =>t (k,v) ->高电压 我想随后用恒定时间访问重复查询它:: lookup :: Hashable k =>HT k v ->k ->也许 v 似乎有两个候
..
我最近一直在学习 HashMaps,但我有一个问题似乎无法得到明确的答案.主要区别 - HashMap hash1 = new HashMap(); 对比 HashMap 我认为当您定义 HashMap 时,它需要键和值.任何帮助将非常感激.谢谢. 解决方案 这些是你的选择: J2SE Map map = new HashMap(); J2SE 5.0+ 风格(使用泛型
..
..
想知道有没有比如下计算给定字符串的字符数更简单的方法? String word = "AAABBB";映射charCount = new HashMap();for(String charr: word.split("")){添加整数 = charCount.putIfAbsent(charr, 1);如果(添加!= null)charCount.computeIfPresent
..
我知道这已经在论坛上被问过几次,我没有找到任何可以被认为是最合适的解决方案的“标记"答案 - 所以再次询问: 我们从书中得到了一个非常大的文本,所有这些都无法放入记忆中.我们需要找到文本中出现频率最高的 10 个单词.执行此操作的最佳(时间和空间)方式是什么? 我的想法: 将文件分成 k 个大小的块(这样每个块都可以存储在内存中).现在,对每个块执行外部排序.一旦我们在磁盘上有
..
我想在 HashMap 中显示值.HashMap 可能有重复的值(但不是重复的键),但我只想显示一次值. 所以我应该找出 Map 是否有重复值.我知道我们可以遍历 Map 并使用 map.containsValue(value) 的返回布尔值.我想知道是否存在任何方法来查找地图中的重复值,或者我们应该自己编写代码? 解决方案 一个简单的解决方案是将值列表的大小与值集进行比较. //
..
在我的 Java 代码中,我使用 Guava 的 Multimap (com.google.common.collect.Multimap) 使用这个: Multimap索引 = HashMultimap.create() 这里,Multimap 键是 URL 的一部分,值是 URL 的另一部分(转换为整数).现在,我分配我的 JVM 2560 Mb (2.5 GB) 堆空间(通过使用 Xm
..
在阅读HashMap的源代码时,我在public V put(K key, V value)中看到了这个片段: for (Entry; e = table[i]; e != null; e = e.next) {对象 k;if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {V oldValue = e.value;e.val
..
我正在尝试合并多个哈希图也对相同键的值求和,我想用玩具示例解释我的问题如下 HashMapm = new HashMap();HashMapm2 = new HashMap();m.put("苹果", 2);m.put("梨", 3);m2.put("苹果", 9);m2.put("香蕉", 6); 我试过putall m.putAll(m2); 输出如下{香蕉=6,苹果=9
..