天道酬勤,学无止境

collections

Get index of element that matches a predicate

问题 我知道如何通过谓词查找列表的第一个元素:Find first element by predicate 有没有一种简单的方法来获取该元素的索引? 回答1 IntStream.range(0, yourList.size()) .filter(i -> yourList.get(i)... your filter condition) .collect(Collectors.toList());

2022-05-16 18:48:08    分类:技术分享    java   collections   java-stream

Argument passed to function must be callable, array given

问题 我正在尝试对集合中的每个元素运行一个方法。 它是驻留在同一类中的对象方法: protected function doSomething() { $discoveries = $this->findSomething(); $discoveries->each([$this, 'doSomethingElse']); } protected function doSomethingElse($element) { $element->bar(); // And some more } 如果我在调用Collection::each之前检查is_callable([$this, 'doSomethingElse'])它返回 true,所以显然它是可调用的。 然而,调用本身会引发异常: 类型错误:传递给 Illuminate\Support\Collection::each() 的参数 1 必须是可调用的,给定数组,在第 46 行的 ---.php 中调用 可以在此处找到尝试调用的方法。 我只是通过传递一个本身只是调用该函数的闭包来绕过这个,但这绝对是一个更清洁的解决方案,我不知道它为什么会引发错误。 回答1 protected function doSomething() { $discoveries = $this->findSomething(); $discoveries-

2022-05-16 15:16:08    分类:技术分享    php   laravel   collections

thread-safe CopyOnWriteArrayList reverse iteration

问题 考虑以下代码片段: private List<Listener<E>> listenerList = new CopyOnWriteArrayList<Listener<E>>(); public void addListener(Listener<E> listener) { if (listener != null) { listenerList.add(listener); } } public void removeListener(Listener<E> listener) { if (listener != null) { listenerList.remove(listener); } } protected final void fireChangedForward(Event<E> event) { for (Listener<E> listener : listenerList) { listener.changed(event); } } protected final void fireChangedReversed(Event<E> event) { final ListIterator<Listener<E>> li = listenerList.listIterator(listenerList.size()); while (li

2022-05-16 01:37:12    分类:技术分享    java   collections

Sonar error Conditions should not unconditionally evaluate to "TRUE" or to "FALSE"

问题 我收到声纳违规: “条件不应无条件地评估为“TRUE”或“FALSE”” 对于下面的代码。 List<MediaContent> savedList = source.getChildMediaContents(); List<MediaContent> supplierList = target.getChildMediaContents(); // if existing and incoming both empty if(savedList == null && supplierList == null){ return false; } // if one is null and other is not then update is required if(savedList == null && supplierList != null){ return true; } if(savedList != null && supplierList == null){ return true; } 在两个 if 块下方,它给出了一个错误 // if one is null and other is not then update is required if(savedList == null && supplierList != null){ return true

2022-05-15 17:53:08    分类:技术分享    java   collections   sonarqube   sonar-runner

Compare a mongo diff on two collections

问题 我有两个 mongo 集合,一个是指生产环境,另一个是测试环境。 如何比较我的两个系列之间的差异? 我尝试将它们转储到 bson,然后转换为 json。 但我不能只对它们执行简单的差异,因为排序可能会有所不同,而且 json 文件太大而无法排序。 回答1 从Mongo 4.4开始,聚合框架提供了一个新的 $unionWith 阶段,执行两个集合的并集(来自两个集合的组合管道结果到一个结果集中)。 更容易找到两个集合之间的差异: // > db.test.find() // { "a" : 9, "b" : 2 } // { "a" : 4, "b" : 12 } // { "a" : 3, "b" : 5 } // { "a" : 0, "b" : 7 } // { "a" : 7, "b" : 12 } // > db.prod.find() // { "a" : 3, "b" : 5 } // { "a" : 4, "b" : 12 } // { "a" : 3, "b" : 5 } // { "a" : 0, "b" : 7 } db.test.aggregate( { $unset: "_id" }, { $project: { from: "test", doc: "$$ROOT" } }, { $unionWith: { coll: "prod"

2022-05-15 17:48:04    分类:技术分享    mongodb   collections   diff

Making HashMap Iterators fail "faster"

问题 在查看 Open Java 1.8 的快速失败行为时,我注意到在put(k,v)中,当地图中存在其值被替换的现有键时,我们不会提高modCount 。 这对于 HashMap 的keySet集合迭代器是可以的,但对于entrySet视图来说不是最优的,因为如果修改了底层映射,我们可以更好地为后者抛出一个 CME。 如果像我指出的在其他地方提出的entrySet和values视图有一个单独的 volatile 标志(如modCount ),它不会使快速失败的行为“更好”吗? 或者我错过了什么。

2022-05-15 16:06:04    分类:技术分享    java   collections

Are the keys in a Dictionary<TKey, TValue> immutable?

问题 我从 API 返回Dictionary<string, string>但根据某些规则需要修改一些键名。 在我开始复制到新Dictionary之前,我只想确认Dictionary<TKey, TValue>中的键是不可变的。 回答1 没错,如果密钥发生变化,您将需要使用旧密钥删除条目并使用新密钥插入新条目。 如果只有部分键发生变化,则不需要复制整个字典。 Dictionary上的 Add 和 Remove 操作都大致是 O(1) 操作。 回答2 回答3 Dictionary<string, string> 中的键是不可变的。 例如,下面的代码: Dictionary<string, string> dict = new Dictionary<string, string>(); dict.Add("One", "1"); dict.Add("Two", "2"); var k = dict.First(); k.Key = "Three"; 将抛出以下编译器错误: 无法将属性或索引器“System.Collections.Generic.KeyValuePair.Key”分配给 - 它是只读的 话虽如此,如果您使用引用类型, Dictionary<T, T>可能具有可变键,请参阅: C# Dictionary<> 和可变键 (我知道,我知道,字符串是引用类型

2022-05-14 21:38:03    分类:技术分享    c#   .net   collections   generics

How can members of IEnumerable<T> be modified?

问题 回答1 您必须将修改序列与修改其元素区分开来。 您可以毫无问题地修改元素,因为您无法通过使用属性和函数来修改对象的类型。 因此,这一切都很好,因为IEnumerable<T>中的所有元素都是T或派生自T的类型。 您提到的此类违规行为只有在您可以拥有例如Base类型的对象时才会发生在IEnumerable<Derived>

2022-05-14 16:00:26    分类:技术分享    c#   collections   covariance

Referencing Oracle user defined types over DBLINK?

问题 我在两个不同的 Oracle 实例上使用两个不同的 Oracle 模式。 我已经定义了几种类型和类型集合来在这些模式之间传输数据。 我遇到的问题是,即使类型具有完全相同的定义(用于在模式中创建两个集合的脚本相同),Oracle 仍将它们视为不可互换的不同对象。 我曾考虑将传入的远程类型对象转换为相同的本地类型,但我收到一个关于跨 dblink 引用类型的错误。 本质上,我正在执行以下操作: DECLARE MyType LocalType; -- note, same definition as the RemoteType (same script) BEGIN REMOTE_SCHEMA.PACKAGE.PROCEDURE@DBLINK( MyType ); -- MyType is an OUT param LOCAL_SCHEMA.PACKAGE.PROCEDURE( MyType ); -- IN param END; 失败是因为 REMOTE 过程调用无法理解 MyType,因为它将 LocalType 和 RemoteType 视为不同的对象类型。 我也尝试如下 DECLARING MyType: MyType REMOTE_SCHEMA.RemoteType@DBLINK; 但我得到另一个关于跨 dblinks 引用类型的错误。 类型之间的 CAST

2022-05-14 10:46:26    分类:技术分享    oracle   types   collections   dblink

Magento get a list of products that are not related to any category

问题 回答1 $collection = Mage::getModel('catalog/product')->getCollection() ->addAttributeToFilter('category_ids','');

2022-05-13 22:40:07    分类:技术分享    php   collections   magento