Tag: hashmap

需要一个Java映射/表,其中包含一个值的多个键。 价值通常会改变

我需要的是一个允许多个键访问单个对象的集合。 我需要对这个对象进行频繁的修改。 对于500k +条目,它也必须是高效的。

在java中使用HashMap的主要好处是什么?

在我正在看的这个Java项目中,我一直在看HashMap的代码,就像这样 /** imageID –> image map */ Map imgs = new HashMap(); 然后在课堂上: // images loadImages(); actualImage = imgs.get(this.DEFAULT_IMAGE_ID); JLabel label = new JLabel(actualImage); 这段代码的目的是什么? 我对这整个概念都很模糊。

两个或更多(哈希)映射的联合

我有两个包含相同类型对象的地图: Map a = new HashMap(); Map b = new HashMap(); public class TaskJSO { String id; } 地图键是“id”属性。 a.put(taskJSO.getId(), taskJSO); 我想获得一个列表:“Map b”中的所有值+“Map a”中不在“Map b”中的所有值。 执行此操作的最快方法是什么? 谢谢 编辑:比较由id完成。 因此,如果两个TaskJSO具有相同的id(等于方法被覆盖),则认为它们是相等的。 我的目的是从性能的角度来了解哪种方法最快。 例如,如果我在地图中执行“比较”(如彼得所建议的),是否有任何区别: Map ab = new HashMap(a); ab.putAll(b); ab.values() 或者如果我使用一套(如Nishant所建议的): Set s = new Hashset(); s.addAll(a.values()); s.addAll(b.values());

HashMap Architecture中Array的初始大小是多少?

我认为HashMap的内部存储桶使用数组来存储基于键的值,如下面的屏幕截图所示。 那么,arrays16的初始大小是多少? 如果大小增加, HashMap内部会重新发生一切? 如果没有,那么HashMap数组的初始大小是多少。 另外请确认它是使用数组还是其他任何数据结构,如ArrayList ?

读取文本文件并存储在hashmap中。 然后按顺序排序

文件是这样的: name1 134.2 name2 456.7 name3 265.3 … … 我读了文本文件并存储在HashMap之后,我想按顺序排序(按最高值),但问题是因为我在String中对值进行排序,我无法比较它。 那么..有没有办法将textfile的值以double或integerforms放入hashmap? import java.io.*; import java.util.*; class Test { public static void main(String[] args) throws FileNotFoundException { Scanner scanner = new Scanner(new FileReader(“score.txt”)); HashMap map = new HashMap(); while (scanner.hasNextLine()) { String[] columns = scanner.nextLine().split(“\t\t”); map.put(columns[0], columns[1]); } System.out.println(map); } }

Collectors.groupingBy不接受null键

在Java 8中,这适用于: Stream stream = Stream.of(ArrayList.class); HashMap<Class, List> map = (HashMap)stream.collect(Collectors.groupingBy(Class::getSuperclass)); 但这不是: Stream stream = Stream.of(List.class); HashMap<Class, List> map = (HashMap)stream.collect(Collectors.groupingBy(Class::getSuperclass)); Maps允许使用null键,List.class.getSuperclass()返回null。 但Collectors.grouping可以在Collectors.java第907行发布NPE: K key = Objects.requireNonNull(classifier.apply(t), “element cannot be mapped to a null key”); 如果我创建自己的收集器,它的工作原理改为: K key = classifier.apply(t); 我的问题是: 1)Collectors的Javadoc.groupingBy并没有说它不应该映射一个空键。 出于某种原因这种行为是否必要? 2)是否有另一种更简单的方法来接受一个空键,而不必创建我自己的收集器?

如何在Java中使用重复键的HashMap?

我需要一个Java集合,它将存储一对,一个键和一个值。 所以我决定使用HashMap ,但是我注意到当我尝试添加已经存在的密钥时,先前的(key,value)被新的(NewKey,NewValue)和之前的条目替换迷路了。 因此,当我有重复的键时,前一个键被新的键替换。 如何使用重复键的HashMap?

是否存在使用equals方法进行密钥检查的地图?

我想将数据存储在地图中,关键是unicity,但我希望地图使用我的密钥类的equals方法。 似乎HashMap不使用equals方法(我可能错了,如果是这样我的测试是错误的)。 我的问题是地图使用hashCode来检查重复,我想要一个使用equals的地图实现。 我将时间戳存储在密钥中,并且如果时间戳差异不超过定义的量(假设1000毫秒),则希望使2个密钥等于。 编辑:代码 public class CleanKey { private DateTime start; private DateTime end; public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((end == null) ? 0 : end.hashCode()); result = prime * result + ((start == null) ? 0 : start.hashCode()); return […]

更糟糕的案例时间复杂性放/获得HashMap

当Hashmap的密钥的哈希码总是相等时,Hashmap的最坏情况时间复杂度是多少。 在我的理解中:由于每个密钥都具有相同的哈希码,它将始终转到同一个桶并循环通过它来检查equals方法,因此对于get和put,时间复杂度应为O(n),我是对的吗? 我正在看这个HashMap get / put复杂性,但它没有回答我的问题。 另外在这里Wiki Hash Table他们说明插入的最坏情况时间复杂度是O(1)而对于得到O(n)它为什么会这样?

根据整数命令HashMap

可能重复: 如何在Java中的值上对Map 进行排序? 亲爱的,我有一个哈希映射,其中我保存了值:歌手(字符串)和流行度(整数)。 现在,我希望根据受欢迎程度订购此哈希映射。 怎么能在java中做到这一点?