Tag: 番石榴

地图中HashMap的ImmutableMap.of()变通方法?

有一些实用方法可以创建ImmutableMap如Immutable.of(Key, value)及其重载。 但是这种方法对于Maps类中的HashMap或LinkedHashMap不存在。 有没有更好的方法来做到这一点,或者Guava假设这样的地图始终是一个常量地图,而ImmutableMap是最好的选择,不需要为HashMap提供实用程序。

用谓词对集合进行分区的库方法

我有一个对象集合,我想分成两个集合,其中一个传递谓词,其中一个不通过谓词。 我希望有一个Guava方法可以做到这一点,但它们最接近的是filter ,它不会给我另一个集合。 我想图像方法的签名将是这样的: public static Pair<Collection, Collection> partition(Collection source, Predicate predicate) 我意识到这对我自己的编码速度非常快,但我正在寻找一种能够实现我想要的现有库方法。

如何使用Google Guava自动刷新缓存?

我正在使用Google Guava库进行缓存。 对于自动缓存刷新,我们可以执行以下操作: cache = CacheBuilder.newBuilder() .refreshAfterWrite(15, TimeUnit.MINUTES) .maximumSize(100) .build(….); 但是, 当发生第一个条目的陈旧请求时,将执行自动刷新 。 有没有办法自动刷新它,即使没有缓存数据的请求? 就像每15分钟一样,缓存数据应该从Db中提取并加载它,无论是否有人调用缓存数据。 此外,Guava的缓存到期时间适用于整个缓存。 是否可以基于密钥使缓存值失效? 像密钥“NOT_SO_FREQ_CHANGE_DATA”的缓存数据每1小时到期一次,密钥“FREQ_CHANGING_DATA”的数据应该每15分钟到期一次?

Guava如何使CacheBuilder中的条目到期?

我想使用CacheBuilder,如下所示: 带有过期密钥的基于Java时间的映射/缓存 但是我不明白Guava知道什么时候到期。 番石榴是如何做到的,它的性能成本是多少?

HashMap替代内存高效的数据存储

我目前有一个电子表格类型程序,它将数据保存在HashMaps的ArrayList中。 当我告诉你这没有被certificate是理想的时候,你无疑会感到震惊。 开销似乎比数据本身多5倍的内存。 这个问题询问有效的集合库,答案是使用Google Collections。 我的跟进是“ 哪一部分? ” 。 我一直在阅读文档,但不觉得它非常好地了解哪些类适合这个。 (我也对其他图书馆或建议开放)。 所以我正在寻找能够以最小的内存开销存储密集的电子表格类型数据的东西。 我的列当前由Field对象引用,行由它们的索引引用,值是Objects,几乎总是字符串 有些列会有很多重复的值 主要操作是根据某些字段的值更新或删除记录,以及添加/删除/组合列 我知道H2和Derby等选项,但在这种情况下我不打算使用嵌入式数据库。 编辑 :如果你建议图书馆,我也很感激你,如果你能指出我在这里适用的特定一两节课。 Sun的文档通常包含哪些操作是O(1)的信息,哪些是O(N)等,我在第三方库中看不到太多,也没有真正描述哪些类最适合什么类。

使用Google集合过滤和排序列表

假设我有一个列表(或Set): List testList = Lists.newArrayList(“assocX”,”srcT”,”destA”,”srcX”, “don’t care Y”, “garbage”, “srcB”); 我想找回一个ImmutableList(Set),它按照自然顺序对术语进行排序/分组,其中以“src”开头的术语是第一个,“assoc”第二个和“dest”最后一个。 如果术语不包含那些术语,则应从结果列表中删除它。 因此这里的结果是“srcB”,“srcT”,“assocX”,“destA”。 我想我可以通过Iterables.filter或Predicates的某些组合来做到这一点,但只是没有看到它。 我认为必须有一种简洁的方法。 编辑:代替列表的集合也可以。

Java:如何使用Google的HashBiMap?

键是文件和单词。 该文件提供文件中的所有单词。 这个词给出了所有包含这个词的文件。 我不确定域和共域部分。 我希望K的类型为而V的类型为<HashSet> 。 public HashBiMap<K,V<HashSet>> wordToFiles = new HashBiMap<K,V<HashSet>>(); public HashBiMap<K,V<HashSet>> fileToWords = new HashBiMap<K,V<HashSet>>(); 谷歌的HashBiMap。

部署应用程序时Weblogic Guava问题

我正在尝试将应用程序部署到weblogic服务器,我收到以下错误。 我在类路径中有guava.jar,我尝试了从10岁开始尝试的所有最新版本。 有人可以帮我解决这个问题吗? <Administration Console encountered the following error: weblogic.application.ModuleException: [HTTP:101216]Servlet: "action" failed to preload on startup in Web application: "…". java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor()Lcom/google/common/util/concurrent/ListeningExecutorService; at com.google.common.cache.LocalCache.(LocalCache.java:155) at com.google.common.cache.LocalCache$LocalManualCache.(LocalCache.java:4750) at com.google.common.cache.LocalCache$LocalLoadingCache.(LocalCache.java:4858) at com.google.common.cache.CacheBuilder.build(CacheBuilder.java:739) at com.my.app.servers.UserServer.(UserServer.java:42) at com.my.app.ActionServlet.setAppProperties(DesActionServlet.java:207) at com.my.app.ActionServlet.init(DesActionServlet.java:167) at javax.servlet.GenericServlet.init(GenericServlet.java:240) at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:299) at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:250) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) at weblogic.servlet.internal.StubSecurityHelper.initServletInstance(StubSecurityHelper.java:94) at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:82) at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:74) […]

如何使用TypeToken获取类型参数?

我试图在运行时使用TypeToken查找类型参数,如Guava文档示例IKnowMyType : public class Test<E extends Enum> { private static enum MyEnum { FIRST, SECOND }; private final TypeToken enumType = new TypeToken(getClass()) { }; public static void main(String[] args) { Test container = new Test(); System.out.println(container.enumType.getRawType()); } } 当我运行此代码时,我将class java.lang.Enum作为输出。 为什么不能不class MyEnum ?

Splitter在简单模式上爆炸

我刚刚开始使用Guava代替Google-Collections。 斯普利特课看起来很酷。 但是当我使用它时,像这样: private static final Pattern p = Pattern.compile(” +”); private static final Splitter usSplitter = Splitter.on(p).trimResults(); 我得到一个堆栈转储: java.lang.NoSuchMethodError: com.google.common.base.Platform.precomputeCharMatcher(Lcom/google/common/base/CharMatcher;)Lcom/google/common/base/CharMatcher; at com.google.common.base.CharMatcher.precomputed(CharMatcher.java:662) at com.google.common.base.CharMatcher.(CharMatcher.java:69) at com.google.common.base.Splitter.(Splitter.java:99) at com.google.common.base.Splitter.on(Splitter.java:208) javadocs对此“com.google.common.base.Platform”一无所知。 所以有点难以猜出出了什么问题。 如你所见,模式很简单。