hashmap 相关问题

一种数据结构,它使用散列函数将标识值(称为键)映射到其关联值

Java 中的反向 HashMap 键和值

这是一个简单的问题, 我有一个简单的 HashMap,我想反转其中的键和值。 HashMap myHashMap = new HashMap(); myHashMap.put('...

回答 13 投票 0

基于密钥外部数据的自定义哈希

我有一张只读地图: 结构图{ 内部:HashMap, } 我正在尝试将其转换为以下布局: 结构图{ 键:Vec, 内部:HashMap 我有一张只读地图: struct Map { inner: HashMap<Key, Value>, } 我正在尝试将其转换为以下布局: struct Map { keys: Vec<Key>, inner: HashMap<usize /* index in [keys] */, Value>, } (我这样做是为了优化内存消耗 - 在实际代码中Key在堆中存储一些数据,并且keys将是自定义的Vec,它会进行一个大堆分配并“内联”存储键) 是否可以为这样的布局编写get方法? impl Map { pub fn get(&self, key: &Key) -> Option<&Value> { } } 是否可以按照您的要求编写这样的方法?是的。例如: use std::collections::HashMap; struct Map<K, V> { keys: Vec<K>, inner: HashMap<usize /* index in [keys] */, V>, } impl<K, V> Map<K, V> { pub fn get(&self, key: &K) -> Option<&V> where K: std::cmp::Eq { let index = self.keys.iter().position(|k| k == key); index.map(|i| self.inner.get(&i).unwrap()) } } 但是你应该使用它吗?可能不是。 我不太明白你想要做什么,但是将键放在 Vec 中并将值存储在以 vec 的索引作为键的映射中是真的很奇怪,并且总是比使用单一 vec 效率更低且更不符合人体工程学,或单张地图。 请注意,在 get 中,您必须执行以下操作: 线性搜索Vec中的键 计算给定索引的哈希值 保持不变,0..keys.len()中的每个键都是HashMap中的有效键 (通常)这比仅仅将 (K, V) 对存储在 Vec 中并对键进行线性搜索,或者对键进行哈希处理并在 HashMap 中进行查找(就像在第一个示例中一样)要更多的工作。 此外,这会导致更大的碎片(键和值可能位于内存中的不同页面上(因为它们是单独分配的),并且实际上您只能轻松地从 Vec 的末尾删除键,因为从中间删除键会导致索引发生变化,并且需要重新计算哈希图。 结论是,这是可能的,但你可能不应该这样做。如果您想执行线性搜索,请继续使用 HashMap<K, V> 或使用 Vec<(K, V)> 。如果您想进一步优化,请先进行测量,并确保您知道自己想要做什么。

回答 1 投票 0

使用 &[u8] 作为 HashMap 中的键

如何修复此功能: fn func<'a>(x: &'a HashMap<&[u8], String>) -> Option<&'a String> { 让 k = vec![1, 2, 3]; 让 k: &[u8] = &k; x.get(...

回答 1 投票 0

Java 8 Streams 中的 GroupingBy 具有超过 3 级分组

我需要生成这样的输出json { “帐户”: { “Α”: { “老的”: { “长”:“zerozerooneO”, ...

回答 1 投票 0

Leetcode转K个频繁元素

我正在尝试通过创建一个哈希图来解决这个问题(给定一个整数数组 nums 和一个整数 k,返回 k 个最常见的元素。您可以按任何顺序返回答案。),其中键是...

回答 1 投票 0

如何轻松求两个hashMap的和<String,Integer>?

我有两个HashMap 我怎样才能轻松地总结它们? 这意味着对于字符串“a”,键将是(Map1 的值 + Map2 的值)的总和? 我可以迭代 Map2 的每个项目并添加

回答 3 投票 0

该算法查找数组中前 k 个频繁元素的时间和空间复杂度是多少?

这是我必须找到输入数组中前 k 个频繁元素的算法。我使用了带有 Bucketlist 类型数组的 HashMap。我无法理解我的时间和空间复杂性...

回答 1 投票 0

为什么HashMap的size()有时不可靠?

所以我一直在研究 Leetcode 问题,即按位数对整数数组进行排序。我已经实现了下面的代码,它适用于大多数情况,但有一些非常大......

回答 1 投票 0

当我们实现单独的链式HashMap时,更喜欢将节点插入到链表的头部或尾部?

PS: 鉴于关于 JDK 实现细节的动机或权衡的讨论经常在 StackOverflow 上遇到阻力,普遍认为 JDK 工程师有权......

回答 1 投票 0

获取HashMap中值的所有大小<String,List<String,String>>

在我的 HashMap < String,List< String,String>> 我保存了键(建筑物的名称)和值(来自该建筑物中的设备的 ID)。 我只想获取哈希中每个键的值的大小...

回答 5 投票 0

使用 HashMap 进行对象查找

我正在尝试使用Java HashMap作为对象字典来通过名称(字符串)查找对象。所有的名字都是唯一的;但是,通常非常相似(例如:“delay1&qu...

回答 1 投票 0

有人知道为什么这段代码在 leet 代码中的 3sum 中出现错误吗

给定一个整数数组 nums,返回所有三元组 [nums[i], nums[j], nums[k]],使得 i != j, i != k, and j != k,并且 nums[ i] + nums[j] + nums[k] == 0。 请注意,解决方案集不得...

回答 1 投票 0

从哈希图中获取具有最大值的键?

我有一个像这样定义的HashMap...... HashMap uniqueNames = new HashMap(); 它存储名称以及该名称的出现情况。例如... 唯一名称...

回答 8 投票 0

沙沙声课程的正确答案,但不满意

这是对niveaus最高的抱怨,但我解决了沙沙声课程中的一项任务,我相信这不是最佳解决方案 - 甚至不是一个好的解决方案。 任务:https://github.com...

回答 6 投票 0

如何在java中向现有的List Map对象添加新的键值

在下面的代码中,我正在获取文档地图,我想向文档对象添加新的键和值。 公共列表> getDocuments() { String sql =“从文档中选择*”...

回答 3 投票 0

使用 Java8 流过滤 Map 的键后映射到列表

我有一张地图>。我想在过滤地图的键后将此地图转换为列表。 例子: Map> 单词 = new HashMap<>...

回答 4 投票 0

Python:自定义可变类可以用作字典的键吗?

假设我们有一个像这样的自定义节点类: 类节点: def __init__(self, val, next, random): self.val = val self.next = 下一个 self.random = 随机 我有一个节点...

回答 2 投票 0

从地图列表中检索所有密钥

我在地图列表中存储了一些数据 列表> myList; 有没有一种简单的方法可以获取所有键,而无需逐个元素并调用 keyset()? 说

回答 2 投票 0

Java 中是否有相当于 Python 的 defaultdict 的工具?

在Python中,defaultdict类提供了一种便捷的方法来创建从key -> [值列表]的映射,在下面的示例中, 从集合导入defaultdict d = 默认字典(列表) d...

回答 9 投票 0

如何检查字符串是否包含某些哈希映射键?

如何检查字符串是否包含某些哈希映射键?我试图做到这一点,以便如果用户输入包含任何 HashKey,它将打印出“测试工作”。但我不断收到此错误

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.