草庐IT

java - new HashMap(int) 和 guava Maps.newHashMapWithExpectedSize(int) 的区别

在Java中,您可以创建一个新的HashMap来保存特定数量的项目,如下所示:Mapm=newHashMap(100);Guava提供了一个Maps.newHashMapWithExpectedSize(int)方法,我希望它可以简单地调用HashMap(int)。但它并没有这样做,而是计算自己的容量并使用它。为什么newHashMapWithExpectedSize做自己的事情,为什么我要使用它而不是直接调用newHashMap(int)? 最佳答案 你读过这个方法的Javadoc吗??CreatesaHashMapinstanc

java - Types isAssignable 和 isSubtype 误解

在使用Java6API编写注释处理器时,我遇到了以特定方式处理所有map的需求,但我显然误解了API的目的或调用方式。这是让我不开心的代码:importjavax.lang.model.element.Element;importjavax.lang.model.type.TypeMirror;importjavax.lang.model.util.Elements;importjavax.lang.model.util.Types;importjavax.annotation.processing.ProcessingEnvironment;...publicStringdoThin

用于静态值的 Java Enum 或 HashMap

我正在生成一个CSV文件和CTL文件以供sqlldr使用。CTL文件需要知道我要加载的列的名称,而我的CSV文件需要知道这些字段的默认值。/**ModelsalineintheCSVfile*/publicclassCSVRecord{...}/**ModelstheCTLfile*/publicclassControlFile{...}这两个类在CSVExportFile中初始化和使用,我有两种方法:1。枚举publicenumColumns{ID("1"),NAME("Bob"),...}2。HashMappublicclassCSVExportFile{privateHashMa

Java 8 Map of Collections 从集合中删除元素,如果为空则删除条目

我有一张map,其中的值是一个集合。给定一个键,我想删除集合中的一个元素并返回它,但如果集合为空,我也想删除该条目。有没有一种方法可以使用Java8的众多新Map方法之一在短时间内完成此操作?一个简单的示例(我使用Stack,但它可以是List、Set等)。为举例起见,我们假设已经检查map是否包含key。publicstaticStringremoveOne(Map>map,intkey){Stackstack=map.get(key);Stringresult=stack.pop();if(stack.isEmpty()){map.remove(key);}returnresult

java - 在 HashMap 中,为什么阈值(调整大小的下一个大小值)是容量 * 负载因子。为什么不等于 map 的大小或容量

在HashMap中,为什么阈值(调整大小的下一个大小值)是容量*负载因子。为什么不等于大小或map的容量。例如,初始默认容量=16,负载因子=0.75,因此threshold=(capacity*loadfactor)=(16*0.75)=12。当我们添加第13个元素时map调整大小为什么会这样,为什么map的作者决定保留它capacity*loadfactor(即12)?为什么与容量(即16)不同。为什么不保持阈值等于容量,以便仅在hashmap已满时才进行重新散列? 最佳答案 Javadoc,Javadoc,Javadoc。那是

java - 限制 Java HashMap 中 get 方法的对象类型

这个问题在这里已经有了答案:WhatarethereasonswhyMap.get(Objectkey)isnot(fully)generic(11个答案)关闭3年前。我已经像这样实例化了我的HashMap:MapmyHashMap=newHashMap();Key的数据类型是字符串,所以当我尝试在map中插入一个新的键值对时保持Key为整数,它会抛出错误.myHashMap.put(1L,"value");这意味着在put方法中他们限制了Key的数据类型。但是,在使用get方法从map中获取值时,它不会检查Key的数据类型。所以如果我这样写,它不会给出编译错误。myHashMap.g

java - 使用预定义值填充 HashMap (java)

我遇到了以前不必处理的问题。我正在为Java中的数据库编写补丁,基本上是转换存储在某些行中的数据。为了做到这一点,我有一个转换表,可以告诉我什么值变成什么。例如,如果我读入“RC”、“AC”、“GH”中的任何一个->将值更新为“T1”。(这些只是随机示例,它基本上是将一个字符串转换为另一个字符串。)我需要一种存储这些转换的好方法。我在想一个HashMap:KEY,VALUE:(RC,T1)(AC,T1)(GH,T1)等等。现在,有几十个这样的。补丁初始化时填充此散列图的好方法是什么? 最佳答案 我会在设置HashMap时进行初始化例

java - 如何制作具有两个索引的 map ?

我在java中有一个这样的map:Map>map=newHashMap();我想通过使用index1和index2作为查找在map中获取我的Object。 最佳答案 最简单的方法是使用Guava的Table,如果您愿意使用第三方库。它是这样工作的:Tabletable=HashBasedTable.create();table.put(index1,index2,obj);ObjectretrievedObject=table.get(index1,index2);您可以按照以下说明将其添加到您的项目中:HowtoaddGuavat

java - map 清除与空

我有一个map,用于存储动态数据,这些数据在创建后立即被丢弃(即使用;它们被快速消耗)。从某种意义上说,它响应用户交互,即当用户单击按钮时,map将被填充,然后数据用于完成一些工作,然后不再需要map。所以我的问题是清空map的更好方法是什么?我应该每次都将它设置为null还是应该调用clear()?我知道清除在时间上是线性的。但我不知道如何将该成本与每次创建map的成本进行比较。map的大小不是恒定的,认为它可能在创建之间运行从n到3n个元素。 最佳答案 如果map未从其他对象引用,而其他对象可能很难设置新map,则简单地null

java - 添加到 HashMap 时出现 NullPointerException

将数据添加到HashMap时出现NullPointerException。我正在写一个类来计算某些对象的给定频率。这是我的代码(去掉了任何不必要的细节):publicclassFrequencyCounter{privateMapfreq;publicFrequencyCounter(){freq=newHashMap();}publicintadd(Objectkey){System.out.println("Mapisnull:"+(freq==null));System.out.println("Keyisnull:"+(key==null));if(freq.containsK