Joiner这里初始化不正确吗?我有以下课程,当我尝试使用 加入示例paths数组时joiner,我得到了一个NullPointerException.
public class CPath {
private static final Joiner joiner = Joiner.on("/");
private String[] elements;
@Override
public String toString() {
return joiner.join(elements);
}
}
// main method
final String[] paths = {"a/b/c", "d", "", null, "e/f/g", "h/i", null, ""};
final CPath c3 = new CPath(paths);
c3.toString(); //<<<< NPE
Run Code Online (Sandbox Code Playgroud) 例如,我有字符串数组:
String[] arr = {"one", "two", "three"};
Run Code Online (Sandbox Code Playgroud)
使用 Guava Joiner 可以得到这样的字符串:
"<one>, <two>, <three>"
Run Code Online (Sandbox Code Playgroud)
其中, 是分隔符,< >是每个元素的前缀和后缀。谢谢。
在我的项目的一个关键部分中,它基本上允许控制器异步接收对象,放入 a 中,Queue由线程一次从队列中顺序处理一个,然后服务响应,较旧的处理过的对象保留在队列中,直到更新的对象项目插入。
回到过去(几个月前),我Queue解决这个特定业务特定问题的实现是使用 Guava 的EvictingQueue,它现在标记为@Beta,因此应用程序的这一部分可能会在未来的 Guava 版本中中断。
private final Queue<SomeRandomBusinessObject> items = Queues.synchronizedQueue(EvictingQueue.create(queueSize));
Run Code Online (Sandbox Code Playgroud)
是否有任何线程安全和固定大小的替代方案来EvictingQueue实现这一目标?
我遇到一个特定的用例,如果对象为空,我经常需要将它们包装起来Optional。看一下这段代码:
List<AbstractCorporateAction> cas = stream.toList();
if (cas.isEmpty()) return Optional.empty();
else return Optional.of(cas);
Run Code Online (Sandbox Code Playgroud)
我检查列表是否为空,如果确实为空,则返回一个空可选,如果不是,则将其包装。原因是有时我得到列表本身的空值,有时我得到一个实际的列表,但它是空的。
通过这种方法,当返回的可选本身为空时,我不需要仔细检查底层列表。
但对于不同的数据结构,实现方式有所不同。是否有第三方库的内置方法可以实现此目的?我得到的最接近的是 fromGuava.MoreObjects#isEmpty但它只检查对象是否为空,并且在它为空的情况下不返回可选值。
我可以为此编写自己的封面,但我正在寻找一种专业、可靠的方法来实现所需的功能。
如何将Guava用于我的Web应用程序?我想用它来代替JUnit进行测试.那可能吗?如果我使用JSP和servlet构建webapps,我可以从Guava中获得什么其他用途?
我有一个基本实现的MyService接口MyServiceImpl.我将其包装MyServiceImpl成一系列MyService装饰器.
为此,我创建了MyServiceDelegate一个抽象类,它接受一个MyService实例并将所有服务调用委托给提供的MyService实例.
但是在我的单元测试中,对于特定需求,我需要找回第一个真正的实现MyService,即MyServiceImpl,我只有一个MyService引用装饰器.
我只是想知道是否可以使用Guava,以功能性的方式进行递归,这将返回我已经装饰了很多层并且不是委托服务的"原始服务".我想使用像Function这样的函数来返回委托服务,如果是原始服务,则使用null,但不知道是否使用它.
我知道我可以通过while循环轻松完成,而且我不是在寻找替代解决方案.只想知道番石榴是否可以解决这些问题.
假设我有一个字符串列表(简化)
fullList = {a,b,c,d,a,d,c,b}
而且我想找到喜欢的情侣
couplesList = {{a,a},{b,b}, ...}
我此刻接近这个问题的方式是
我最终得到了两个对象{a,a},但是我无法将它们从中删除,fullList因为我没有使用迭代的"迭代器"样式(因为我使用的是番石榴谓词它无论如何都不会起作用 - 因为我没有迭代器指向由Itarables.find(...)函数找到的元素).
我想以"高效"的方式做到这一点,所以我想避免多个嵌套循环等.
任何想法如何更正确/有效地处理这个问题?我有点卡住了.
其中哪一个更受欢迎?
private static ImmutableList<Airline> sAirlines =
ImmutableList.copyOf(Collections.EMPTY_LIST);
private static ImmutableList<Airline> sAirlines = ImmutableList.of();
Run Code Online (Sandbox Code Playgroud) 我有一个字符串,我想将其解析为布尔值。如果它不包含true或false字符串,它应该返回默认值(true在我的例子中)。
"true" -> true
"false" -> false
"something" -> true
Run Code Online (Sandbox Code Playgroud)
我正在寻找 Java 方法或一些 util(Apache Commons 或 Guava)。
我无法使用Java方法Boolean.parseBoolean,因为它没有带默认值的参数(默认值始终是false):
System.out.println(Boolean.parseBoolean("true")); // true
System.out.println(Boolean.parseBoolean("false")); // false
System.out.println(Boolean.parseBoolean("something")); // false instead of true
Run Code Online (Sandbox Code Playgroud)
与 Apache Commons 相同BooleanUtils.toBoolean:
System.out.println(BooleanUtils.toBoolean("true")); // true
System.out.println(BooleanUtils.toBoolean("false")); // false
System.out.println(BooleanUtils.toBoolean("something")); // false instead of true
Run Code Online (Sandbox Code Playgroud)
我可以写我自己的方法:
private static Boolean toBoolean(String value, boolean defaultValue) {
return Optional.ofNullable(BooleanUtils.toBooleanObject(value))
.orElse(defaultValue);
}
Run Code Online (Sandbox Code Playgroud)
并使用它:
System.out.println(toBoolean("true", true)); // true
System.out.println(toBoolean("false", true)); // false …Run Code Online (Sandbox Code Playgroud) 这个问题与之前提出的问题有关.据我所知,我正在尝试使用Google Guava库来查找集合交集.
HashMap m1 = new HashMap();
m1.put(1, new Integer[]{1,2,3,4});
m1.put(2, new Integer[]{1,4,5,6});
HashMap m2 = new HashMap();
m2.put(1, new Integer[]{1,5,null,null});
m2.put(2, new Integer[]{1,4,null,null});
Run Code Online (Sandbox Code Playgroud)
现在,据我所知,我应该应用Guava函数entriesInCommon()来查找两个映射中出现的条目.但我不明白我该怎么做.有任何想法吗?谢谢.
更新:地图中的键
guava ×10
java ×10
collections ×2
java-17 ×1
java-stream ×1
option-type ×1
queue ×1
recursion ×1
spring-boot ×1