Tag: guava

我是否使用Google Guava正确实现了equals和hashCode?

我正在使用hibernate并需要覆盖equals和hashCode()。 我选择使用google-guava的equals和hashCode助手。 我想知道我在这里是否遗漏了什么。 我有id / image和filePath的 get / set方法。 @Entity @Table(name = “IMAGE”) public class ImageEntity { private Integer idImage; private String filePath; @Override public int hashCode() { return Objects.hashCode(getFilePath()); } @Override public boolean equals(final Object obj) { if(obj == this) return true; if(obj == null) return false; if(obj instanceof ImageEntity){ final ImageEntity otherImage = […]

将java Map转换为自定义键=值字符串

我有TreeMap ,我需要将其转换为类似URI的字符串然后再转换为Map。 我需要设置自定义分隔符。 是否可以为我做任何工具(番石榴,Apache公共?)? 我知道,我可以写简单的循环,但我正在寻找单行:) 例如 key value key1 val1 key2 val2 key1_val1|key2_val2

Java Guava组合Multimap和Cache

是否有可用的组合Guava的Cache和Multimapfunction? 本质上,我需要一个集合,其中条目在给定时间后到期,例如在Cache可用,但我有非唯一键,我需要条目独立到期。

地图在番石榴地图

我有一些代码与Map<String, Map>对象有效(它被实例化为HashMaps的HashMap),但我想知道是否有更好的方法在Guava中表示这个数据结构。 我考虑过Multimap ,但是当Guava中有ListMultimap和SetMultimap时,我没有找到“MapMultimap”。 我也检查了桌子 ,它看起来更像是它,但它的名字让我感到不舒服:我所拥有的绝对不是一张桌子而是一棵树。 (第二个键之间没有重叠) 是否有更好的番石榴替代品或者我应该坚持使用Map<String, Map> ?

组合guava eventbus和AWT Event线程处理的最佳方法

当你有一个异步事件总线和fire事件时,让我们说在UI中捕获的模型中你可能有以下问题: 已注册的处理程序在工作线程中执行,但所有UI swing更改都需要在AWT事件线程中执行。 这意味着您需要在EventQueue.invokeLater(…)包含所有处理程序clode。 这看起来像很多锅炉板代码。 我想知道是否有更智能的解决方案来解决这个问题。 guava事件总线的扩展如何标记在特殊线程中执行的处理程序? 这可以用annotion标记,例如@ExecuteWithinEDT : class EventBusChangeRecorder { @Subscribe @ExecuteWithinEDT void recordCustomerChange(ChangeEvent e) { recordChange(e.getChange()); } }

带有番石榴集合的线程安全HashSet

就像标题所说,我想使用Guava Collections获得一个线程安全的HashSet。 你能帮助我吗? 谢谢!

Java为高并发情况限制了非阻塞缓冲区

基本上我需要一个数据结构来存储服务器端的临时聊天消息。 它应该是: 有界:因为我不需要存储太多消息,客户端将每秒发送请求以获取新消息。 我认为绑定的大小应该是最大值。 在一秒钟内挂载并发请求。 当缓冲区已满时,将删除旧消息。 适合高并发访问:我不想使用像Collections.synchronizedXXXX这样的数据结构,因为在迭代期间,如果其他线程更改了数据结构,例如添加了一条消息,它将抛出exception,所以我必须锁定整个数据结构,实际上我并不关心客户端请求是否可以获得最后插入的消息,因为它们将在一秒后发送新请求,另一方面写操作应该永远不会延迟。 包java.util.concurrency下的类似乎是解决方案,但是…… 非阻塞:LinkedBlockingQueue,ArrayBlockingQueue它们可以是有界的,并且在迭代期间不会抛出exception,但它们都是阻塞队列。 当队列已满时,我想将新元素添加到尾部并从头部删除旧元素而不是阻塞它,并等待某人删除标题。 所以我的问题是第三个库有什么好的实现吗? 比如谷歌番石榴? 或者您可能更了解在服务器上存储临时聊天消息? 非常感谢你!

如何扫描类注释?

我有一个简单的jane servlets Web应用程序,我的一些类有以下注释: @Controller @RequestMapping(name = “/blog/”) public class TestController { .. } 现在,当我的servlet应用程序启动时,我想获得所有具有@Controller注释的类的列表,然后获取@RequestMapping注释的值并将其插入字典中。 我怎样才能做到这一点? 我也使用Guice和Guava,但不确定是否有任何与注释相关的助手。

java.lang.NoSuchMethodError:com.google.common.base.Preconditions

我得到这个错误 java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124) at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:32) at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137) at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:339) at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:123) 我正在为社交媒体构建机器人,因此我使用Selenium库,并且机器人在Java应用程序上运行良好,但是当我将代码复制到Web应用程序时,我有一个Servlet监听我的Android应用程序,当我运行servlet时,并且servlet调用使用Selenium的bot的代码,当它涉及到该行时它会抛出该错误 System.setProperty(“webdriver.chrome.driver”, “C:\\Users\\manue\\OneDrive\\Escritorio\\chromedriver.exe”); driver = new ChromeDriver(); 我曾经读过它可能是我所拥有的番石榴版本,但是我的版本的番石榴已经更新了,我不知道为什么我会收到这个错误。 在我的maven pom.xml中,我有这样的依赖 javax javaee-web-api 7.0 provided org.seleniumhq.selenium selenium-java 3.10.0 这里有我项目结构的截图。 我项目的截图

IllegalAnnotationsException SetMultimap是一个接口,JAXB无法处理接口

我有以下代码: private SetMultimap dynamicFields = TreeMultimap.create(Ordering.natural(), new Comparator() { @Override public int compare(Dynamic o1, Dynamic o2) { return o1.getTitle().compareTo(o2.getTitle()); } }); 这给了我以下例外。 IllegalAnnotationsException SetMultimap is an interface, and JAXB can’t handle interfaces 我的问题是,为什么这不起作用,但这样做: List test = new ArrayList(); 我如何修复SetMultimap以便JAXB满意?