Tag: 字典

如何使用LinkedHashMap获取子图?

目前,我正在使用TreeMap来存储一些x和y坐标,但与ArrayList或HashMap相比,迭代速度非常慢。 我正在使用它,因为我需要subMap()方法,因此即使精确的X值(键)不存在,我也可以在确定的范围内获得X值。 LinkedHashMap与HashMap速度几乎相同,我可以按照插入顺序迭代键(我需要插入顺序或比较顺序,因为它在TreeMap中完成)但我没有submap()方法。 在TreeMap中,我可以非常快速地生成子图。 是否存在任何数据结构或某种方式来存储有序值(通过插入顺序或比较器)比TreeMap更快,即使精确值不在地图中,也允许获取范围内的子图? 我的意思是,也许我想要2到25之间的值,但2不存在,最近的是3,所以它将从3到25返回一个子图。或者某种方式将此function添加到LinkedHashMap ?

为什么Map.compute()采用BiFunction

我不明白为什么Map.compute()和Map.computeIfPresent()采用BiFunction参数以及Map.computeIfAbsent() Function : V compute(K key, BiFunction remappingFunction) V computeIfPresent(K key, BiFunction remappingFunction) V compute(K key, BiFunction remappingFunction) V computeIfPresent(K key, BiFunction remappingFunction) V computeIfAbsent(K key, Function mappingFunction) V computeIfPresent(K key, BiFunction remappingFunction) V computeIfAbsent(K key, Function mappingFunction) 我期待一个普通的Function Function Function ,将旧值映射到新值,resp。 Supplier Supplier为新值。 调用者已经拥有密钥(第一个参数),因此函数或供应商已经可以使用它。 我找到的所有例子都不使用密钥。 我想到的原因: 关键必须(有效) final – 这很容易管理 有一些花哨易用的方法参考 但我不相信这些是这种设计的可行原因。 你有什么想法?

用于字典的java中的Foreach循环

我想通过java中的字典中的每个项目。 澄清我想做什么,这是C#代码 Dictionary LableList = new Dictionary(); foreach (KeyValuePair z in LabelList); 我不知道如何做到这一点是java,例如我这样做了 for(Object z: dic) 但它说它不可迭代。 请指教……

在Java TreeMap中查找元素位置

我正在使用字符串TreeMap ,并使用它来实现单词的Dictionay。 然后我有一个文件集合,并希望在字典定义的向量空间(单词空格)中创建每个文件的表示。 每个文件都应该有一个表示它的向量,具有以下属性: 矢量应该与字典大小相同 对于文件中包含的每个单词,向量在与字典中的单词位置对应的位置应该具有1 对于未包含在文件中的每个单词,向量在对应于字典中单词位置的位置应该具有-1 所以我的想法是使用Vector来实现这些向量。 (这种表示集合中文档的方式称为布尔模型 – http://www.site.uottawa.ca/~diana/csi4107/L3.pdf ) 我在创建这个向量的过程中遇到的问题是我需要一种方法来查找字典中单词的位置,如下所示: String key; int i = get_position_of_key_in_Treemap(key); <— purely invented method… 1)我可以在TreeMap上使用这样的方法吗?如果没有,你能提供一些代码来帮助我自己实现吗? 2)TreeMap上是否有一个迭代器(按字母顺序排列),我可以获得它的位置? 3)最终我应该使用另一个类来实现字典?(如果你认为使用TreeMaps我不能做我需要的)如果是的话,哪个? 提前致谢。 增加部分: 由dasblinkenlight提出的解决方案看起来很好,但是存在复杂性问题(由于将密钥复制到数组中而与字典的维度呈线性关系),并且不能接受为每个文件执行此操作的想法。 对我的问题还有其他想法吗?

用Gson解析JSON地图/词典?

我需要解析一个看起来像这样的JSON响应: {“key1”: “value1”, “key2”: “value2”, “key3”: {“childKey1”: “childValue1”, “childKey2”: “childValue2”, “childKey3”: “childValue3” } } class Egg { @SerializedName(“key1”) private String mKey1; @SerializedName(“key2”) private String mKey2; @SerializedName(“key3”) // ??? } 我正在阅读Gson文档,但无法弄清楚如何正确地将字典反序列化为Map。

在使用getOrDefault()之后我应该使用put()还是putIfAbsent()?

Java8引入了那些不错的方法getOrDefault()和putIfAbsent() ,允许编写如下代码: Map<Foo, List> itemsByFoo = … List bars = itemsByFoo.getOrDefault(key, new ArrayList()); bars.add(someNewBar); 现在我想知道是否有很好的事实理由: itemsByFoo.put(key, bars); 要么 itemsByFoo.putIfAbsent(key, bars); 两者都有效: 当向列表添加元素时,选项1可能会执行大量不必要的“put”调用 当为新键添加新条目占主导地位时,option2可能会执行大量不必要的“containsKey”调用 SO:选择1或选项2“总是”的理由是什么?

如何知道Option ]]是否包含密钥?

我想知道request.body.asFormUrlEncoded包含deviceId 。 val formValues=request.body.asFormUrlEncoded val number = formValues.get(“mobile”).head var deviceId =”deviceIdNotFound” if(condtion) //thats the problem deviceId= formValues.get(“deviceId”).head 对于Option[Map[String,Seq[String]]]有任何conatins或任何其他函数的方法吗?

为什么resize的方式实现?

在添加新的键值对时,我有几个关于重建HashMaps问题。 我将根据这些事实提出问题(它们适用于Oracle JVM,不确定它们是否适用于其他JVM): 每次当HashMap大于阈值(阈值= loadFactor * numberOfEntries)时,resize重建HashMap以使内部表数组更大。 新创建的条目放在哪个桶中无关紧要 – 地图仍然会变大。 即使所有条目都进入一个桶(即它们的密钥’ hashCode()返回相同的数字)。 删除数据时, HashMap不会缩小。 即使从HashMap中删除了所有键,它的表的内部大小也不会改变。 现在的问题是: 这些事实是否正确? 如果是,那么: 为什么resize这样实现? 即使显然没有必要,是否有意扩大内桌? 还是个bug? 它为什么不收缩?

Hashtable和Dictionary之间有什么区别?

Dictionary和Hashtable之间有什么区别,我如何使用Java中的Dictionary类?

重写hashcode方法时的HashMap性能

在HashMap ,如果我将自定义对象作为键。 如果我覆盖hashCode()方法并将其实现为将值传递为’ 1 ‘,会发生什么情况; 会不会有任何表现? 如果我改变hashCode()方法使用Math.random()函数返回随机值会对性能产生什么影响?