草庐IT

java - Joiner 线程安全吗?

Google集合Joiner线程安全吗? 最佳答案 是的!我们不会重复SimpleDateFormat的错误。:-)Joiner需要对其姊妹类Splitter进行类似的文档升级,它说:*Warning:splitterinstancesarealwaysimmutable;aconfiguration*methodsuchas{@codeomitEmptyStrings}hasnoeffectontheinstanceit*isinvokedon!Youmuststoreandusethenewsplitterinstanceret

java - 包装已检查 Java 异常的标准方法

我有一个相当详细的问题,关于包装已检查异常的正确方法,以及Guava的处理方式。(抱歉太长了,但我想把我的思考过程记下来)标准的Runnable接口(interface)是这样的:publicinterfaceRunnable{publicvoidrun();}其中run()无法抛出已检查的异常。因此,如果我想要一个Runnable用于包装抛出已检查异常的任务,并且我打算拥有调用Runnable.run()的东西处理这些异常,而不是在Runnable.run()本身中,我必须将异常包装在未经检查的异常中。所以有一段时间我在使用:Runnabler=newRunnable{@Overri

java - 对 Guava BiMap 进行排序

我是Guava库的新手,但发现BiMap非常适合我的需要。我的一个问题是我需要对我的BiMap中的值进行排序。通常,我会使用TreeMap,因为它具有继承排序功能,但必须能够反转映射以将键视为值。因此,我一直在向各位专家征求有关解决此问题的建议。我看到的解决方案是:1.创建一个BiMap比较器并使用我自己的map排序实用程序。2.构建我自己的“BiTreeMap”数据结构。有没有我没有考虑过的解决方案?有没有我错过的“Guava方式”?谢谢! 最佳答案 我们目前没有排序的BiMap类型,因为它的工作方式有点模棱两可:条目会按键排序吗

java - Guava:Iterables.filter VS Collections2.filter,有什么大的区别吗?

我想知道在Guava中Iterables.filter(Iterable,Predicate)之间是否有任何差异和Collections2.filter(Collection,Predicate)方法?它们似乎既维护迭代顺序,又提供实时View。Javadoc说调用Collections2.filter().size()将遍历所有元素。假设我有一个谓词来过滤项目列表,因此我想要View(或列表,无关紧要)中剩余的项目数。我应该用什么?使用Collections2.filter似乎更简单,因为Collection提供了size()方法。但是在后台,有没有区别:ImmutableList.

java - 严重的 Guava 内存泄漏 - 需要解决方法

有什么方法可以解决GoogleGuavar15memoryleak(linktothebugreport)问题?在缓存组件中?(不依赖于应用程序服务器可能会清理和/或考虑Web应用程序永远不会重新启动/重新部署) 最佳答案 我猜你不需要关心它。Tomcat消息说Threadsaregoingtoberenewedovertimetotryandavoidaprobablememoryleak.IIUIC这意味着一旦所有旧线程都消失了,所有指向旧版本类的指针也将消失。细节:线程池的原因是线程创建的大成本。池本身是hacky因为你得到一

java - 用 Guava 缓存

哪些Guava类适合做线程安全的缓存?我使用一个组合键,它是动态构建的,所以softKeys()没有意义,对吧?我在某个地方看到了ConcurentLinkedHashMap,这是要走的路吗?它已经在最近的版本中了吗?很抱歉问的方式困惑...更新这个问题已经很老了,浏览他的答案可能会浪费时间。很久以来就有一个CacheBuilder这是要走的路。 最佳答案 10.0版的新Guava库引入了Cache专为缓存设计的接口(interface)。它带有CacheBuilder,类似于MapMaker并且MapMaker的所有缓存方法都将在

java - Guava @VisibleForTesting : Help me with a complete example

我的目的是对私有(private)方法进行单元测试,我了解如何导入@VisibleForTesting并将其用于私有(private)方法。我进行了大量搜索,但无法找到演示此功能的完整示例。例如:classMyClass{@VisibleForTestingprivatedouble[]getWorkArray(double[]values,intlength){::return}}现在在JUnit中,我一定能做到@TestpublicvoidtestProvateMethod(){MyClassobject=newMyClass();assertNotNull(object.getW

java - Guava MultiSet 与 map ?

我对Multiset的理解是一个有频率的集合,但是我总是可以用Map来表示频率,还有其他原因要用Multiset吗? 最佳答案 Multiset的优势在Map:添加集合中尚不存在的元素时无需特殊代码。直接处理元素计数的方法:count(E),add(E,int)等代码的意图更清晰。Multiset显然将元素映射到它们的计数。Map可以将元素映射到任意整数。另见:MultisetJavadocMultisetexplainedintheGuavaWiki 关于java-GuavaMulti

Java 8 流字符串空或空过滤器

我在Stream中安装了GoogleGuava:this.map.entrySet().stream().filter(entity->!Strings.isNullOrEmpty(entity.getValue())).map(obj->String.format("%s=%s",obj.getKey(),obj.getValue())).collect(Collectors.joining(","))如您所见,过滤函数中有一条语句!String.isNullOrEmpty(entity)。我不想再在项目中使用Guava,所以我只想简单地替换它:string==null||strin

Exception in thread “main“ java.lang.NoSuchMethodError: com.google.comon.base.Preconditions.checkArg

hadoop-3.1.3hbase-2.2.2-bin一、问题描述:在学习林子雨老师编写的《Spark编程基础》时使用如下命令运行jar包读取HBase时出现如下错误:Exceptioninthread“main”java.lang.NoSuchMethodError:com.google.comon.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/object;)v二、问题分析:对此问题在配置hive时也有出现,问题主要是虚拟机内HBase,Spark,Hadoop三者的guava版本不一致导致的。在Hive的安装