Guava为Java类型提供了很好的工厂方法,例如Maps.newHashMap().
但是还有java Maps的构建者吗?
HashMap<String,Integer> m = Maps.BuildHashMap.
put("a",1).
put("b",2).
build();
Run Code Online (Sandbox Code Playgroud) 我看到Guava有针对字符串的isNullOrEmpty实用方法
Strings.isNullOrEmpty(str)
Run Code Online (Sandbox Code Playgroud)
我们对列表有什么相似之处吗?就像是
Lists.isNullOrEmpty(list)
Run Code Online (Sandbox Code Playgroud)
这相当于
list == null || list.isEmpty()
Run Code Online (Sandbox Code Playgroud)
另外,我们对阵列有什么相似之处吗?就像是
Arrays.isNullOrEmpty(arr)
Run Code Online (Sandbox Code Playgroud)
这相当于
arr == null || arr.length == 0
Run Code Online (Sandbox Code Playgroud) 我正在浏览PredicateJava 中使用的代码.我从来没用过Predicate.有人可以指导我Predicate在Java中的任何教程或概念解释及其实现吗?
我期待在maven存储库中找到guava-libraries.看起来guava正在为google-collections库添加更多功能.
我有一个相当大的Android应用程序,它依赖于许多库项目.Android编译器对每个.dex文件有65536个方法的限制,我超过了这个数字.
当你达到方法限制时,你可以选择两种途径(至少我知道).
1)缩小你的代码
2)构建多个dex文件(参见此博文)
我调查了两个并试图找出导致我的方法计数变得如此之高的原因.Google Drive API占据了Guava依赖的最大块,超过12,000.Drive API v2的总库存超过23,000!
我想我的问题是,你认为我该怎么做?我应该删除Google云端硬盘集成作为我应用的功能吗?有没有办法缩小API(是的,我使用proguard)?我应该采用多重dex路由(看起来相当痛苦,尤其是处理第三方API)?
上下文
我需要返回对我用于数据缓存的地图的引用,并且我想确保没有人可以修改它们的引用.
题
我在网上看过很多对UnmodifiableMap和ImmutableMap的引用,但我没有看到任何比较/对比它们的东西.我认为Google/Guava有一个很好的理由创建了他们自己的版本 - 有人可以告诉我它是什么吗?
我最近读过这篇文章并看过有人使用这个课程,但在几乎所有情况下,使用它null都会起作用 - 如果不是更直观的话.有人能提供一个具体的例子Optional来实现null无法或更清洁的方式吗?我唯一能想到的就是使用Maps不接受null密钥的东西,但即便如此,也可以使用null值的"映射"来完成.任何人都可以给我一个更有说服力的论点吗?谢谢.
有没有理由呢
Lists.transform()
Run Code Online (Sandbox Code Playgroud)
但不是
Lists.filter()
Run Code Online (Sandbox Code Playgroud)
?
如何正确过滤列表?我可以用
new ArrayList(Collection2.filter())
Run Code Online (Sandbox Code Playgroud)
当然,但是如果我理解正确,这种方式并不保证我的订单保持不变.
我在Java中有一个简单的整数到字符串映射,但我需要能够轻松地从整数中检索字符串,并且还能从字符串中检索整数.我已经尝试了Map,但它只能从整数中检索字符串,这是一种方式:
private static final Map<Integer, String> myMap = new HashMap<Integer, String>();
// This works one way:
String myString = myMap.get(myInteger);
// I would need something like:
Integer myInteger = myMap.getKey(myString);
Run Code Online (Sandbox Code Playgroud)
有没有正确的方法来实现这两个方向?
另一个问题是我只有一些不会改变的常数值(1->"low", 2->"mid", 3->"high"因此,找一个复杂的解决方案是不值得的.
我想做以下事情:
List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
但是在某种程度上,结果列表是Guava的实现ImmutableList.
我知道我能做到
List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList());
List<Integer> immutableList = ImmutableList.copyOf(list);
Run Code Online (Sandbox Code Playgroud)
但是我想直接收集它.我试过了
List<Integer> list = IntStream.range(0, 7)
.collect(Collectors.toCollection(ImmutableList::of));
Run Code Online (Sandbox Code Playgroud)
但它引发了一个例外:
com.google.common.collect.ImmutableCollection.add(ImmutableCollection.java:96)中的java.lang.UnsupportedOperationException