标签: guava

HashMap的构建器

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)

java collections guava

104
推荐指数
7
解决办法
9万
查看次数

Google Guava isNullOrEmpty用于收藏

我看到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)

java guava

101
推荐指数
4
解决办法
7万
查看次数

Java中的谓词

我正在浏览PredicateJava 中使用的代码.我从来没用过Predicate.有人可以指导我Predicate在Java中的任何教程或概念解释及其实现吗?

java predicate guava

100
推荐指数
2
解决办法
10万
查看次数

maven repo中有guava-libraries吗?

我期待在maven存储库中找到guava-libraries.看起来guava正在为google-collections库添加更多功能.

java maven guava

94
推荐指数
3
解决办法
4万
查看次数

如何缩小代码 - dex中的65k方法限制

我有一个相当大的Android应用程序,它依赖于许多库项目.Android编译器对每个.dex文件有65536个方法的限制,我超过了这个数字.

当你达到方法限制时,你可以选择两种途径(至少我知道).

1)缩小你的代码

2)构建多个dex文件(参见此博文)

我调查了两个并试图找出导致我的方法计数变得如此之高的原因.Google Drive API占据了Guava依赖的最大块,超过12,000.Drive API v2的总库存超过23,000!

我想我的问题是,你认为我该怎么做?我应该删除Google云端硬盘集成作为我应用的功能吗?有没有办法缩小API(是的,我使用proguard)?我应该采用多重dex路由(看起来相当痛苦,尤其是处理第三方API)?

android guava dex google-drive-api android-multidex

90
推荐指数
6
解决办法
5万
查看次数

UnmodifiableMap(Java Collections)与ImmutableMap(Google)

上下文

我需要返回对我用于数据缓存的地图的引用,并且我想确保没有人可以修改它们的引用.

我在网上看过很多对UnmodifiableMap和ImmutableMap的引用,但我没有看到任何比较/对比它们的东西.我认为Google/Guava有一个很好的理由创建了他们自己的版本 - 有人可以告诉我它是什么吗?

java collections map guava

90
推荐指数
2
解决办法
11万
查看次数

Guava的Optional课程有什么意义

我最近读过这篇文章并看过有人使用这个课程,但在几乎所有情况下,使用它null都会起作用 - 如果不是更直观的话.有人能提供一个具体的例子Optional来实现null无法或更清洁的方式吗?我唯一能想到的就是使用Maps不接受null密钥的东西,但即便如此,也可以使用null值的"映射"来完成.任何人都可以给我一个更有说服力的论点吗?谢谢.

java generics guava

87
推荐指数
4
解决办法
2万
查看次数

番石榴:为什么没有Lists.filter()函数?

有没有理由呢

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 list filter guava

86
推荐指数
5
解决办法
4万
查看次数

Java中的双向映射?

我在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"因此,找一个复杂的解决方案是不值得的.

java map apache-commons guava

79
推荐指数
6
解决办法
8万
查看次数

如何将Java 8流收集到Guava ImmutableCollection中?

我想做以下事情:

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

guava java-8 java-stream

75
推荐指数
4
解决办法
2万
查看次数