Tag: 番石榴

番石榴:如何结合filter和变换?

我有一个string的集合,我想将它转换为一个string的集合都是空的或空的string被删除,所有其他的被修剪。 我可以分两步来做: final List<String> tokens = Lists.newArrayList(" some ", null, "stuff\t", "", " \nhere"); final Collection<String> filtered = Collections2.filter( Collections2.transform(tokens, new Function<String, String>(){ // This is a substitute for StringUtils.stripToEmpty() // why doesn't Guava have stuff like that? @Override public String apply(final String input){ return input == null ? "" : input.trim(); } }), new […]

获取Java基本types的默认值

我手边有一个java原始types: Class c = int.class; // or long.class, or boolean.class 我想为这个类获得一个“默认值” – 具体地说,如果这个类没有被初始化的话,这个值被分配给这个types的字段。 例如,数字“0”,布尔值“假”。 有没有一个通用的方法来做到这一点? 我试过了 c.newInstance() 但是我得到一个InstantiationException,而不是一个默认的实例。

如何使用番石榴将可能的空值转换为默认值?

如果传递的对象引用为null Guava是否提供了获取默认值的方法? 我正在寻找类似于<T> T nullToDefault(T obj, T default) ,如果obj为null则返回默认 null 。 这里在stackoverflow我没有发现任何关于它。 我只是寻找一个纯粹的番石榴解决scheme(如果有的话)! 我在Gauva 10 API中找不到任何东西,只有com.google.common.base.Objects看起来很有前途,但是缺less类似的东西。

对于每个可能返回null的方法,我应该使用Java8 / Guava Optional吗?

可选用来表示可空对象,这个类的一些用法包括 作为返回types的方法,作为返回null的替代方法 表示没有可用的值 为了区分“未知”(例如,不存在于地图中)和“已知没有价值”(存在于地图中,具有值 Optional.absent()) 要将不可用的引用存储在不支持null的集合中(尽pipe还有其他几种应该首先考虑的方法) 对于第一种情况,我是否需要返回可选的所有可空的返回方法?

不可修改的地图(Java Collections)vs ImmutableMap(Google)

上下文 我需要返回一个引用到我用于数据caching的地图,我想确保没有人可以修改他们的引用。 题 我在网上看到很多关于UnmodifiableMap和ImmutableMap的引用,但是我没有看到任何比较/对比的东西。 我认为有一个很好的理由,谷歌/番石榴创造了自己的版本 – 有人可以告诉我它是什么?

使用Google Guava的Objects.ToStringHelper

我使用了commons-lang中的ToStringBuilder.reflectionToString(class)来实现简单DTO的toString() 。 现在我正在尝试使用Google Guava而不是Apache commons库。 我在Guava中findObjects.ToStringHelper 。 但如果class上有很多成员,那就太冗长了。 例如: @Override public String toString() { return MoreObjects.toStringHelper(this.getClass()).add("name", name) .add("emailAddress", emailAddress) .add("department", department).add("yearJoined", yearJoined) .toString(); } 如果我使用commons-lang,它会简单得多: @Override public String toString() { return ToStringBuilder.reflectionToString(this); } 有没有更好的方法来实现toString()与番石榴,而不是commons-lang? 番石榴文档

我怎样才能收集一个Java 8stream到一个番石榴ImmutableCollection?

我想要做以下事情: List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); 但是结果列表是番石榴ImmutableList列表的实现。 我知道我可以做 List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); List<Integer> immutableList = ImmutableList.copyOf(list); 但我想直接收集。 我试过了 List<Integer> list = IntStream.range(0, 7) .collect(Collectors.toCollection(ImmutableList::of)); 但它抛出了一个例外: java.lang.UnsupportedOperationException com.google.common.collect.ImmutableCollection.add(ImmutableCollection.java:96)

Lists.newArrayList vs新的ArrayList

创build一个stringList的最佳构造是什么? 它是Lists.newArrayList() (从番石榴)或new ArrayList() ? 这只是个人喜好吗? 还是只是键入genericstypes推断? 或者在使用Lists.newArrayList()有没有任何理论或实际价值?

如何JUnittesting两个List <E>包含相同的顺序相同的元素?

上下文 我正在为MyObject类写一个简单的JUnittesting。 一个MyObject可以从一个静态工厂方法创build,该方法使用String的可变参数。 MyObject.ofComponents("Uno", "Dos", "Tres"); 在MyObject存在的任何时候,客户端可以通过.getComponents()方法,以List <E>的forms检查它创build的参数。 myObject.ofComponents(); // -> List<String>: { "Uno", "Dos", "Tres" } 换句话说,一个MyObject都会记住并显示使其存在的参数列表。 关于这个合同的更多细节: getComponents的顺序将与用于创build对象的顺序相同 重复后续的string组件是允许和保留的顺序 null上的行为是未定义的(其他代码保证没有null到工厂) 在对象实例化之后,没有办法改变组件的列表 我正在写一个简单的testing,从String列表创build一个MyObject ,并检查它是否可以通过.getComponents()返回相同的列表。 我立即做了这个,但是这应该是在一个现实的代码path上发生的 。 码 这里我的尝试: List<String> argumentComponents = Lists.newArrayList("One", "Two", "Three"); List<String> returnedComponents = MyObject.ofComponents( argumentComponents.toArray(new String[argumentComponents.size()])) .getComponents(); assertTrue(Iterables.elementsEqual(argumentComponents, returnedComponents)); 题 是谷歌Guava Iterables.elementsEqual()最好的方式,只要我在我的构buildpath库,比较这两个列表? 这是我一直在痛苦的事情; 我应该使用这个帮助器方法,通过一个可重用的<E> ..检查大小,然后迭代运行.equals() ..或互联网searchbuild议的任何其他方法? 比较unit testing列表的规范方法是什么? 我希望获得可选的见解 方法testing是否合理devise? […]

有没有一个优雅的方式来消除使用番石榴转换collections时的空值?

使用Google Collections( 更新 : Guava )时,我有一个关于简化一些Collection处理代码的问题。 我有一堆“计算机”对象,我想结束他们的“资源ID”的集合。 这样做是这样的: Collection<Computer> matchingComputers = findComputers(); Collection<String> resourceIds = Lists.newArrayList(Iterables.transform(matchingComputers, new Function<Computer, String>() { public String apply(Computer from) { return from.getResourceId(); } })); 现在, getResourceId()可能会返回null(并且改变它现在不是一个选项),但是在这种情况下,我想省略生成的String集合中的空值。 以下是一个过滤空白的方法: Collections2.filter(resourceIds, new Predicate<String>() { @Override public boolean apply(String input) { return input != null; } }); 你可以把这些放在一起 Collection<String> resourceIds = Collections2.filter( Lists.newArrayList(Iterables.transform(matchingComputers, new […]