草庐IT

java - Guava 中是否有对应的不可变枚举映射?

我最近了解了EnumMap在Java中的好处,并想替换现有的ImmutableMap到枚举映射。不过,我也喜欢ImmutableMap提供的不可变属性。guava中是否有变体ImmutableEnumMap可用?在存储方面,哪个(EnumMap与ImmutableMap)性能更好?我找不到两者的比较。如果有人能指出一个链接或就这两种数据结构的效率提供一些见解,我将不胜感激? 最佳答案 Guava贡献者在这里。Guava目前没有ImmutableEnumMap变体,但如果有,它可能只是EnumMap的包装器。(也就是说,更好的不可变实

java - 如何消除 Guava MultiMap 值中的重复项?

代码:MultimapmyMultimap=ArrayListMultimap.create();myMultimap.put("12345","qwer");myMultimap.put("12345","abcd");myMultimap.put("12345","qwer");System.out.println(myMultimap);结果:{12345=[qwer,abcd,qwer]}是否可以消除重复的“qwer”?谢谢。 最佳答案 使用SetMultimap之一实现,例如HashMultimap:SetMultimap

java - 如何消除 Guava MultiMap 值中的重复项?

代码:MultimapmyMultimap=ArrayListMultimap.create();myMultimap.put("12345","qwer");myMultimap.put("12345","abcd");myMultimap.put("12345","qwer");System.out.println(myMultimap);结果:{12345=[qwer,abcd,qwer]}是否可以消除重复的“qwer”?谢谢。 最佳答案 使用SetMultimap之一实现,例如HashMultimap:SetMultimap

java - 如何使用可用 RAM 在 Java 中有效地缓存对象?

我需要使用可用RAM的一部分在Java中缓存对象。我知道其他人问过这个问题,但没有一个回答符合我的要求。我的要求是:简单轻量并不比普通的HashMap慢很多使用LRU,或一些近似于LRU的删除策略我尝试了LinkedHashMap,但它要求您指定最大元素数,而且我不知道需要多少元素才能填满可用RAM(它们的大小会有很大差异)。我目前的做法是使用GoogleCollection的MapMaker如下:Mapcache=newMapMaker().softKeys().makeMap();这看起来很有吸引力,因为它应该在需要更多RAM时自动删除元素,但是有一个严重的问题:它的行为是填满所有

java - 如何使用可用 RAM 在 Java 中有效地缓存对象?

我需要使用可用RAM的一部分在Java中缓存对象。我知道其他人问过这个问题,但没有一个回答符合我的要求。我的要求是:简单轻量并不比普通的HashMap慢很多使用LRU,或一些近似于LRU的删除策略我尝试了LinkedHashMap,但它要求您指定最大元素数,而且我不知道需要多少元素才能填满可用RAM(它们的大小会有很大差异)。我目前的做法是使用GoogleCollection的MapMaker如下:Mapcache=newMapMaker().softKeys().makeMap();这看起来很有吸引力,因为它应该在需要更多RAM时自动删除元素,但是有一个严重的问题:它的行为是填满所有

java - 用于内存高效数据存储的 HashMap 替代方案

我目前有一个电子表格类型的程序,它将其数据保存在HashMap的ArrayList中。当我告诉你这并不理想时,你无疑会感到震惊。开销似乎比数据本身使用了5倍以上的内存。Thisquestion询问高效的馆藏库,答案是使用Google馆藏。我的跟进是“哪一部分?”。我一直在阅读文档,但觉得它不能很好地了解哪些类适合这个。(我也愿意接受其他图书馆或建议)。所以我正在寻找能够以最小的内存开销存储密集的电子表格类型数据的东西。我的列当前由Field对象引用,行由索引引用,值是对象,几乎总是字符串有些列会有很多重复值主要操作是根据某些字段的值更新或删除记录,以及添加/删除/组合列我知道H2和De

java - 用于内存高效数据存储的 HashMap 替代方案

我目前有一个电子表格类型的程序,它将其数据保存在HashMap的ArrayList中。当我告诉你这并不理想时,你无疑会感到震惊。开销似乎比数据本身使用了5倍以上的内存。Thisquestion询问高效的馆藏库,答案是使用Google馆藏。我的跟进是“哪一部分?”。我一直在阅读文档,但觉得它不能很好地了解哪些类适合这个。(我也愿意接受其他图书馆或建议)。所以我正在寻找能够以最小的内存开销存储密集的电子表格类型数据的东西。我的列当前由Field对象引用,行由索引引用,值是对象,几乎总是字符串有些列会有很多重复值主要操作是根据某些字段的值更新或删除记录,以及添加/删除/组合列我知道H2和De

java - 从 Guava 的 Splitter 创建一个 String[]

有没有更有效的方法从Guava'sSplitter创建字符串数组?比以下?Lists.newArrayList(splitter.split()).toArray(newString[0]); 最佳答案 Iterables.toArray(Iterable,Class)可能不会更有效,但更清晰。这几乎可以完成您已经做的事情:publicstaticT[]toArray(Iterableiterable,Classtype){Collectioncollection=toCollection(iterable);T[]array=Ob

java - 从 Guava 的 Splitter 创建一个 String[]

有没有更有效的方法从Guava'sSplitter创建字符串数组?比以下?Lists.newArrayList(splitter.split()).toArray(newString[0]); 最佳答案 Iterables.toArray(Iterable,Class)可能不会更有效,但更清晰。这几乎可以完成您已经做的事情:publicstaticT[]toArray(Iterableiterable,Classtype){Collectioncollection=toCollection(iterable);T[]array=Ob

java - 使用 Guava MapMaker/CacheBuilder 处理空值

我尝试使用MapMaker/CacheBuilder制作缓存,但我不明白如何正确处理空值。ConcurrentMapgraphs=newMapMaker().concurrencyLevel(4).weakKeys().maximumSize(10000).expireAfterWrite(10,TimeUnit.MINUTES).makeComputingMap(newFunction(){publicGraphapply(Keykey){returncreateExpensiveGraph(key);}});如果createExpensiveGraph方法返回空值,则抛出Nullp