Tag: 番石榴

在Multimap中检索特定值

我正在使用每个键有两个值的Multimap。 下面是我用来分别获取每个值的代码: 第一个代码获取第一个对象值: for(Object object : map.get(object)) { return object } 然后,我正在使用另一种方法来检索其他值。 此方法将第一个对象作为参数: for(Object object : team.get(object)) { if(object != initialObject) { return object; } } 这似乎是一种“hackish”做事方式,所以有没有办法让我更容易获得价值?

不可变的番石榴collections品的缺陷?

我不确定我理解的不可变集合的缺陷是否正确,所以我在这个答案中列出它们。 希望有人在这里纠正我。 a):与Collections.unmodifiableXXX()相比,ImmutableXXX.copyOf() 丢失了源集合function 。 例如,当将linkedList放入ImmutableList.copyOf()时,不再链接ImmutableList。 与基于树的集合相同。 b):人们认为Collections.unmodifiableXXX只使用相同的源集合引用,因此一旦源集合发生更改,Collections.unmodifiableXXX也会更改。 但我的解决方案是将源集合包装到临时集合中,该集合传递给ImmutableXXX.copyOf()。 见下面的代码: List l = new ArrayList(); List unmodifiableList = Collections.unmodifiableList(l); ImmutableList immutableList= ImmutableList.copyOf(l); l.add(“a”);//unmodifiableList is also added “a”, immutableList not. /*My solution as follows: So unmodifiableList2 is also immutable as ImmutableList.copyOf(l) does*/ List unmodifiableList2= Collections.unmodifiableList(new ArrayList(l)); 您对Immutable系列的理解是什么? 谢谢!

Guava:Cacheloader.load()如何工作

假设我有两个线程,即线程A和线程B,以及一个空的并且有10分钟到期的LoadingCache 。 CacheLoader用于构建LoadingCache以及它从数据库中检索的所有内容。 假设LoadingCache仍为空,并且线程A和线程B同时调用了LoadingCache.get(key) 。 CacheLoader.load()方法会被调用两次吗? 从我在文档中看到的内容: 如果get(K)或getUnchecked(K)的另一个调用当前正在加载key的值,则只需等待该线程完成并返回其加载的值 。 请注意,多个线程可以同时加载不同键的值。 为了validation我的理解,如果线程A和线程B之间有5ms的差异,那么线程A将自动锁定CacheLoader.load()方法,加载值,然后线程B只是获取加载的值。 这样,不需要同步。 这是正确的吗?

使用HashBasedTable作为累加器的Guava ImmutableTable的Java 8收集器给出了IllegalAccessError

通过返回ImmutableTable方法的字符串处理列表。 例如ImmutableTable process(String item) { /*…*/} 。 收集结果,即合并所有结果(单个表可能包含重复项)并返回ImmutableTable 。 当没有重复项时,我当前的实现工作: final ImmutableTable result = itemsToProcess.parallelStream() .map(item -> ProcessorInstanceProvider.get() .buildTable(item)) .collect(toImmutableTable()); public static Collector<ImmutableTable, ImmutableTable.Builder, ImmutableTable> toImmutableTable() { return Collector.of( ImmutableTable.Builder::new, ImmutableTable.Builder::putAll, ( a, b) -> a.putAll(b.build()), ImmutableTable.Builder::build); } 但收集ImmutableTable时失败,因为存在重复的行列条目,因此构建失败。 如何防止构建失败? 我如何使用HashBaseTable ,它将与重复项一起使用。 像T – ImmutableTable , A – HashBasedTable和R – ImmutableTable内存使用量最少吗? 试过: final HashBasedTable result […]

将两个Map 相加的最佳方法是什么?

我有以下地图。 Map map1= new HashMap(){{ put(“no1″,”123”); put(“no2″,”5434”); put(“no5″,”234”);}}; Map map1 = new HashMap(){{ put(“no1″,”523”); put(“no2″,”234”); put(“no3″,”234”);}}; sum(map1, map2); 我想加入他们,总结类似的键值。 什么是使用java 7或guava库的最好方法? 预期产出 Map output = { { “no1″ ,”646”}, { “no2”, “5668”}, {“no5″,”234”}, {“no3″,”234” } }

Google Guava Cache – 在运行时更改驱逐超时值

我使用以下内容: LoadingCache inQueueLoadingCache = CacheBuilder.newBuilder() .expireAfterWrite(120, TimeUnit.SECONDS) .removalListener(inQueueRemovalListener) .build(inQueueCacheLoader); 每120秒后,缓存条目被逐出,并按预期工作。 我的问题是:如何更改当前缓存的超时值,比如120到60秒? 在此更改期间缓存条目会发生什么?

Google Guava的CacheLoader loadAll()方法实现问题

我有兴趣知道google guava 11.0库中引入的loadAll方法实现的有效方法是什么。 以下是描述加载所有扩展方法实现的代码 根据CachesExplained的示例 LoadingCache graphs = CacheBuilder.newBuilder().maximumSize(1000) .refreshAfterWrite(1, TimeUnit.MINUTES) .build( new CacheLoader() { public Graph load(Key key) { // no checked exception return getGraphFromDatabase(key); } public Map loadAll(Iterable keys) { return getAllGraphsFromDatabase(keys); } } ); private Map getAllGraphsFromDatabase(Iterable keys) { lListOfGraph = //resultset got from DB Call for (lCount = 0; lCount < […]

番石榴:Splitter并考虑逃离?

我对番石榴的分裂可能性感兴趣: Splitter.on(“|”).split(“foo|bar|baz”); // => “foo”, “bar”, “baz” 这工作正常。 现在,如果我想拆分“|” 但不是“[”和“]”之间: Splitter.on(something).split(“foo|ba[r|ba]z”); // => “foo”, “ba[r|ba]z” 根据我的理解,不可能在番石榴中定义这个“东西”。 我发现了这个问题: 问题799:将谷歌转义库添加到番石榴 。 这有关系吗?

为什么Google Collections中没有SortedMultiset?

Google Collections包含TreeMultiset接口和TreeMultiset类,但我很惊讶地发现没有相应的SortedMultiset接口。 这样的东西对于建立离散概率分布非常有用。 在我尝试自己实现它之前,我想知道是否有一个特定的理由将其Multiset ,例如可能违反Multiset或Collection不变量,或者固有的性能问题等。 编辑 :我最初没有意识到这一点,但这实际上是3个单独的请求: 更改一个方法的返回类型( TreeMultiset.entrySet ) 一个新的接口,用于匹配TreeMultiset的现有function 一对新方法,用于对树分支中的计数求和

是否有一个Java相当于Javascript的“一些”方法?

我有一个集合,我想知道至少有一个元素是否满足某些条件。 从本质上讲,我想在JavaScript中做些什么,我想对集合做些什么!