jjzjj

hashtable

全部标签

java - 哈希表Java插入

我是Java的新手,正在尝试学习哈希表。我想将对象插入到我的哈希表中,然后能够在最后打印哈希表中的所有对象。我不确定我这样做是否正确,因为我读到我需要覆盖get()方法或hashCode()方法,但我不确定为什么。我正在传递学生姓名的String对象。当我在插入后运行调试器时,它将键显示为“null”,并且我插入的索引位于哈希表中的随机位置。前任。1,6,10这就是我一直在添加的方式。谁能告诉我这是否正确,我真的需要重写吗?提前致谢!代码HashtablehashTable=newHashtable();hashTable.put("Donald","Trump");hashTable

java - Java 中是否有有向无环图 (DAG) 数据类型,我应该使用它吗?

我正在用Java为一个电源子系统建模。一个简单的SQLite数据库包含一组行可替换单元(LRU)以及它们之间的连接。我正在编写一个PowerModelAPI来简化数据存储的查询,使用DDD模式和存储库。我正在寻找合适的Java集合来为查询结果建模。LRU连接流中有一些特殊情况需要建模:最初,有一个带有多个端口(电源流中的典型连接涉及产生电源的单个源LRU和消耗电源的单个汇LRU。但是,下游可能有一个连接到多个接收器LRU的单个源LRU。能量流中没有循环。上面#3的包含让我想到从API返回查询结果作为树。但是我在java.util中找到的唯一树是TreeMap键值配对的红黑树,这似乎不合

java - 帮助在 Java 中使用霍纳规则和散列函数?

我正在尝试使用Horner规则将单词转换为整数。我明白它是如何工作的,如果这个词很长,它可能会导致溢出。我的最终目标是在散列函数h(x)=xmodtableSize中使用转换后的整数。我的书建议,由于溢出,您可以“在计算霍纳规则中每个带括号的表达式后应用mod运算符”。我不完全明白他们的意思。假设表达式看起来像这样:((14*32+15)*32+20)*32+5我是否在每个带括号的表达式后取modtableSize并将它们加在一起?这个散列函数和霍纳规则的这个例子会是什么样子? 最佳答案 这本书说你应该利用这些数学等价物:(a*b)

java - 哈希表问题

我有一个有趣的问题,它需要使用Hashtables;我正在为诺基亚的S40开发(符合级别1.4)我希望Hashtable工作的方式:Hashtabletable=newHashtable();table.put(1,"HelloWorld");但是我得到了错误:Themethodput(Object,Object)inthetypeHashtableisnotapplicableforthearguments(int,String)但是,当我创建一个对象引用并传递该引用时,它工作正常!为什么?!工作示例:Hashtabletable=newHashtable();Integertest

java - 如何使用 Java 流将两个数组合并到一个映射中?

假设我们有以下两个数组String[]keys=newString[]{"a","b","c","aa","d","b"}int[]values=newint[]{1,2,3,4,5,6}通过将这2个数组合并到HashTable中,我们得到以下内容//pseudo-codeMapdictionary=newHashTable(("a"=>1)("b"=>8)//because"b"appearedinindex1and5("c"=>3)("aa"=>4)("d"=>5));我们如何使用javaLambda样式来做到这一点?到目前为止,我有以下内容://thisloopsthrought

Java Hashtable#hashCode() 实现坏了?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我想知道当Hashtable仅包含每对具有相同键和值的条目时,Java的Hashtable#hashCode()的默认实现是否被破坏。例如,请参见以下应用程序:publicclassHashtableHash{publicstaticvoidmain(finalString[]args){finalHashtableht=newHashtable();f

java - 基于 Value 然后 Key 对 HashMap 进行排序?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:HowtosortaMaponthevaluesinJava?我有一个HashMap类型:HashMaph=newHashMap();HashMap包含一个字符串列表,Integer是一个计数器,表示已找到该字符串的次数。我希望能够做的是根据整数对HashMap进行排序,然后根据字符串的字母顺序进行排序。目前我正在记录一个单词的最大出现次数(名为max的变量)并显示如下值:publicvoidprint(){while(max>0){for(Stringkey:h.keySet()){if(h.get(key

java - hashmap 在调用 containsKey() 时检查什么?

ArrayListlis=newArrayList();lis.add(2);lis.add(3);ArrayListlis2=newArrayList();lis2.add(2);lis2.add(3);HashMap,Integer>map=newHashMap,Integer>();map.put(lis,7);System.out.println(map.containsKey(lis2));最初,我希望代码打印出“false”,因为lis和lis2是不同的对象。令人惊讶的是,代码打印出“true”。hashmap在调用containsKey()时检查什么?

java - 根据 Java 中的值对 map 进行排序的最简单方法是什么?

我希望我的散列根据值按降序排序。我如何在Java中做到这一点? 最佳答案 AHashMap(及其遗留前身Hashtable)本质上是无序的。即使您对其进行排序,它也将保持无序状态。如果要维护插入顺序,请使用LinkedHashMap反而。如果你想对keys进行自动排序,而不考虑插入顺序,那么使用SortedMap相反。如果你想对Map进行排序在values上,那么您基本上需要将键/值对放在另一种可排序的数据结构中,例如List>,然后使用Collections#sort()对其进行排序在Compatator>的帮助下最后重新填充Li

java - 具有两种 O(1) 查找方式的数据结构。哈希表?

我正在实现一个系统,其中我有一个姓名列表,每个人都有1个电话号码。我需要能够输入姓名并查找电话号码,或者输入电话号码并查找姓名。我知道我可以通过两个哈希表来做到这一点-一个从姓名到电话号码,另一个从电话号码到姓名。然后我可以在O(1)时间内向任一方向查找。然而,这似乎是我存储了太多数据-每个姓名和每个电话号码都存储了两次。有什么方法可以更有效地做到这一点?我应该使用什么数据结构来存储姓名和电话号码?如果相关的话,我正在用Java编码。非常感谢! 最佳答案 Java不提供开箱即用的双向哈希表。依赖于两个哈希表的解决方案已经很好了,除非