Tag: 番石榴

将ConcurrentLinkedHashMap集成到Guava中意味着什么?

我们在项目中使用来自https://code.google.com/p/concurrentlinkedhashmap/的 ConcurrentLinkedHashMap,我看到了一条说明,它在2010年被集成到了Guava的MapMaker和CacheBuilder中。信息非常简短: 将算法技术集成到MapMaker中将在Google Guava r08中发布,并且很大程度上基于此版本。 这究竟是什么意思? concurrentlinkedhashmap项目似乎仍处于活动状态。 它只是一次性集成来引导Guava缓存包吗? 这两个项目自2010年以来是否独立发展? 如果是这样,今天它们之间的主要区别是什么?

如何对番石榴复合图进行排序? (KEY = DATE)

我有一个 Multimap multimap = ArrayListMultimap.create(); 来自番石榴。 我想知道如何在多图中排序日期键。 目前,我这样做: Iterator dateItr = multimap.keySet().iterator(); Set treeSet = new TreeSet(Collections.reverseOrder()); 然后我循环遍历treeSet迭代器。 知道如何避免这种规避吗?

番石榴的ImmutableXXX真的不变吗?

我一直在使用番石榴已经有一段时间并且真正信任它,直到我昨天偶然发现了一个例子,这让我想到了。 长话短说,这里是: public static void testGuavaImmutability(){ StringBuilder stringBuilder = new StringBuilder(“partOne”); ImmutableList myList = ImmutableList.of(stringBuilder); System.out.println(myList.get(0)); stringBuilder.append(“appended”); System.out.println(myList.get(0)); } 运行此命令后,您可以看到ImmutableList中的条目值已更改。 如果这里涉及两个线程,则可能碰巧看不到另一个线程的更新。 另外让我对答案非常不耐烦的是有效Java中的Item15,第五点说: 在构造函数中创建defensives副本 – 这似乎很合乎逻辑。 看一下ImmutableList的源代码,我看到了这个: SingletonImmutableList(E element) { this.element = checkNotNull(element); } 所以,实际上没有复制,虽然我不知道在这种情况下如何实现通用深层复制(可能是序列化?)。 那么..为什么他们称之为Immutable呢?

为什么Guava的TypeToken .getRawType()返回Class 而不是Class

从Effective Java Second Edition,第28项:“不要使用通配符类型作为返回类型。它不会为用户提供额外的灵活性,而是迫使他们在客户端代码中使用通配符类型。” public final Class getRawType() 我刚刚开始掌握通用通配符,以了解我在编写的一段代码中的最后一次未经检查的强制转换警告,我不明白为什么getRawType()返回一个通配符类型。 class Base{} class Child extends Base{} public void test (TypeToken<? extends Base> token) { Class<? extends Base> rawType = (Class<? extends Base>) token.getRawType(); } 我必须在返回一个时抛出token.getRawType() Class<? super ? extends Base>

Guava @VisibleForTesting:帮我一个完整的例子

我的目的是对私有方法进行unit testing,我理解如何导入@VisibleForTesting并将其用于私有方法。 我做了很多搜索,但无法看到演示此function的完整示例。 例如: class MyClass { @VisibleForTesting private double[] getWorkArray(double[] values,int length) { : : return } } 现在在JUnit中,我必须能够做到 @Test public void testProvateMethod() { MyClass object = new MyClass(); assertNotNull(object.getWorkArray(…); } 但困难的部分是我无法理解/做以下事项a)包含相关注释处理器的maven编译器插件片段b)实际上能够测试私有方法。 (因为它抛出与方法可见性相关的错误) 当我在JUnit中编写测试时(由于私有访问错误),我无法在操作中执行此操作。 例如: mvn clean test 请提供一个完整的示例,说明完成私有方法的JUnit测试所涉及的所有步骤。

使用番石榴的最佳方式

您认为使用番石榴的最佳方式是哪种? 因为,在网站上,这些人说接口可能会发生变化,直到发布1.0。 考虑到这一点,您编写的代码不应直接依赖于这些接口,因此,您是否将所调用的所有Guava代码包装到我们的项目中的某种层或外观中,以便,如果这些接口发生更改,那么您至少将这些变化集中在一个地方? 哪种方式最好? 我真的很有兴趣开始使用它,但我有这个问题击中我的想法哈哈:)

按值数对Guava Multimap进行排序

如果我有一个Guava Multimap,我将如何根据给定密钥的值数对条目进行排序? 例如: Multimap multiMap = ArrayListMultimap.create(); multiMap.put(“foo”, “1”); multiMap.put(“bar”, “2”); multiMap.put(“bar”, “3”); multiMap.put(“bar”, “99”); 鉴于此,当迭代遍历multiMap时,我如何首先获得“bar”条目(因为“bar”有3个值而“foo”只有1个)?

通过Spring将Google番石榴缓存构建器注入bean

有人可以提供一个很好的片段来构建和通过Spring xml将Google番石榴的CacheBuilder注入依赖bean吗? 为了概括,我需要一些Spring中的示例来说明使用构建器模式构造对象。

将List 转换为List (或任何扩展Number的类)

我想创建一个非常通用的实用工具方法来获取任何Collection并将其转换为从Number(Long,Double,Float,Integer等)扩展的用户可选类的集合。 我想出了这个代码,它使用Google Collections来转换Collection并返回一个不可变列表。 import java.util.List; import com.google.common.base.Function; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; /** * Takes a {@code List} and transforms it into a list of the * specified {@code clazz}. * * @param * @param stringValues * the list of Strings to be used to create the list of the * specified type * @param clazz […]

将单个元素添加到不可变集合的有效且优雅的方法是什么?

我有一个不可变的集合(强制转换为Set ),可能包含许多元素。 我需要一个Collection,其中包含该集合中的元素以及一个额外元素。 我有kludgy代码来复制集合,然后附加元素,但我正在寻找尽可能保持高效的正确方法。 我有番石榴可用,但我不需要它。