我在一次采访中被要求计算HashMap的内存使用量,以及如果你有200万个项目,它将消耗多少内存。例如:Map>mp=newHashMap>();映射是这样的。keyvalue--------------------------------abc['hello','how']abz['hello','how','are','you']如何估计Java中这个HashMap对象的内存使用情况? 最佳答案 简短回答要了解对象有多大,我会使用分析器。例如,在YourKit中,您可以搜索对象,然后让其计算其深度大小。如果对象是独立的并且是对象
这个问题在这里已经有了答案:HowdoIefficientlyiterateovereachentryinaJavaMap?(46个回答)关闭8年前。我需要一些帮助,我正在自学如何在Javaando中处理map,今天我试图从Hashmap中获取值的总和,但现在我卡住了。这是我要求和的map值。HashMapmap=newHashMap();map.put("FirstVal",(float)33.0);map.put("SecondVal",(float)24.0);作为一个额外的问题,如果我在map中有10或20个值怎么办,我如何将所有这些值相加,我需要做一个“for”吗?感谢您的帮
我正在为持久存储的对象实现缓存。这个想法是:方法getObjectFromPersistence(longid);///Takesabout3seconds方法getObjectFromCache(longid)//Instantly并且有一个方法:getObject(longid),伪代码如下:synchronized(this){CustomObjectresult=getObjectFromCache(id)if(result==null){result=getObjectFromPersistence(id);addToCache(result);}returnresult;}
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭9年前。Improvethisquestion谁能告诉我为什么HashMap没有实现Iterableinterface? 最佳答案 坦率地说,Map(尤其是HashMap)并没有实现Iterator,因为不清楚它应该是什么迭代。共有三种选择:按键值(value)观参赛作品上述三个选择中没有一个看起来完全不合理:可以提出支持这些方法中的每一个的论据。最后,库设计者决定不为你做这个选择
这个问题在这里已经有了答案:关闭11年前.PossibleDuplicate:HowtoInitialiseastaticMapinJava如何在初始化时用Java填充HashMap,可能是这样的吗?publicstaticMapsizeNeeded=newHashMap(){1,1}; 最佳答案 byte,int是原始的,集合作用于对象。你需要这样的东西:publicstaticMapsizeNeeded=newHashMap(){{put(newByte("1"),1);put(newByte("2"),2);}};这将创建一个
我有一个列表(Listlist),我想使用map(HashMapmap)通过它们的ID来索引它的对象。我总是用list.size()作为HashMap中的初始容量构造函数,如下面的代码所示。这是在这种情况下使用的最佳初始容量吗?注意:我永远不会在map上添加更多项目。Listlist=myList;Mapmap=newHashMap(list.size());for(Titem:list){map.put(item.getId(),item);} 最佳答案 如果您希望避免重新散列HashMap,并且您知道不会将其他元素放入HashM
注解可以有复杂的返回类型,比如HashMap。我正在寻找类似的东西:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)public@interfacecolumn{publicHashMaptable();}所以我可以有一个常量注释(伪代码):@column({table=(dbName,tableName),table=(dbName,tableName2)})publicstaticfinalStringUSER_ID="userid";如果Annotation不允许您使用复杂的返回类型,那么对于这种情况有什么
我正在查看HashMap的来源.一个HashMap实现可序列化。好的,这样它就可以作为一个对象被持久化/传输。但我看到哈希表本身被标记为transient。我不明白。如果您将其标记为transient,这是否意味着它应该不被序列化?但是所有的数据都在表中。那为什么是transient呢?也许我对Serializable的工作原理感到困惑? 最佳答案 HashMap使用writeObject和readObject来实现自定义序列化,而不是让其字段正常序列化。它将桶的数量、总大小和每个条目写入流,并在反序列化时从这些字段中重建自身。正如
我想提取一个List来自Map>(E是一个随机类)使用stream().我想要一个使用java8的流的简单单行方法。到目前为止我所尝试的:HashMap>map=newHashMap();Listlist=map.values();//doesnotcompilelist=map.values().stream().collect(Collectors.toList());//doesnotcompile 最佳答案 map.values()返回Collection>不是List,如果你想要后者,那么你需要展平嵌套的List成单个Li
我想做一个Java游戏。一开始程序会询问玩家的人数;之后,它会询问他们的姓名。我将他们的名字放在带有ID和他们的分数的HashMap中。在游戏结束时我计算分数,我想把它放在HashMap中(特定名称的特定分数)。有谁知道如何做到这一点?这是我的代码:玩家:publicclassPlayer{publicPlayer(){}publicvoidsetScore(intscore){this.score=score;}publicvoidsetName(Stringname){this.name=name;}privateStringname;privateintscore;publicP