问题标签 [linkedhashset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - 相当于 Swift 中的 Java LinkedHashSet
在java中,我们有:
和:
然后,当您将项目添加到hashList时,将不允许重复值并且列表是排序的。
所以我的问题是如何在 Swift 中做到这一点?!
我已经看到Swift 的 API 中是否存在一种从数组中删除重复元素的简单方法?
当我将 AutoComplete 数组传递给 func uniq 时,
(用于删除重复项:)
我有这个: AutoComplete 类型的值没有成员元素
自动完成:
java - 如何查看对象列表以找到匹配项?
我正在尝试比较同一类的一堆对象以搜索匹配的 ID?这是 GroupClass,当输入新条目时,它将针对 idNumber 进行测试以查看是否匹配。
这是主要方法
我已经看到了一些类似的问题,但无法让它适用于我的特定情况,在此先感谢。
java - 如何获取数组列表在使用 List 和 LinkedHashSet 从 Java 中的字符串中删除重复值之后
这是家庭作业的一部分,一个搜索引擎。我正在尝试创建一个从字符串输入中删除重复值的类(输入将从用户获取,现在使用随机字符串进行测试)并将标记/单词存储到 ArrayList 以将它们与停用词的 String[] 进行比较(要删除的词)。我正在使用 List 和 LinkedHashSet 因为我想保留单词的顺序并删除重复项。它确实删除了重复的单词并保留了顺序,但我无法将这些单词存储到 ArrayList 中,有什么想法吗?
groovy - 将方法委托给代理受保护值时,意外行为第二次跳过 Agent.send 方法
我一直在尝试做一个小型 Groovy 项目,并且想要一个ConcurrentLinkedHashSet,但 Java 没有提供。因此,我开始使用 Gpars 代理创建自己的代理来“保护”普通的 LinkedHashSet。然后我创建了我的包装类来保存代理,并将我的类上的方法委托给内部代理,就像这样(这个版本使用 methodMissing 作为委托方法)。我尝试了 Groovy interceptable/invokeMethod 并且可以让它工作
但是,当我尝试使用它时 - 它第一次工作,我的字符串被添加,但在第二次调用相同的缺失方法时,agent.send 调用永远不会进行,并且会被跳过。
所以我的简单脚本使用者看起来像这样
我的简单跟踪日志在控制台输出上看起来像这样
正如您在第一次尝试委派时看到的那样,您可以看到“concHashSet methodMissing:”跟踪,并且代理在代理中对其调用 invokeMethod 以影响添加元素。
在第二次调用 conhs.add ('col2') 时,agent.sand 调用永远不会发生,因此我的额外项目永远不会被添加。
这很烦人,因为我认为我有一个简单的方法来创建我的 ConcurrentLinkedHashSet,但是代码不起作用。我可以使用什么机制来获得正确的结果?
正如你所看到的,当我直接调用方法(添加)时Agent<LinkedHashSet>
它工作得很好。在我真正的消费类中,如果我用普通的 LinkedHashSet 替换我的 ConcurrentLinkedHashSet 它可以实现梦想,但不是线程安全的。我想创建一个线程安全版本,这取决于试图让它工作。
我想我可以尝试替换代理并仅在我的 LinkedHashSet 周围使用同步块 - 但它有点难看 - 我认为 Gpars 代理会为我将所有这些作为通用解决方案模式作为具有委托的包装器进行排序。
PS我尝试了另一种方法,我认为这种工作方式,但感觉不对 - 它在实现 GroovyInterceptable 的类上使用 @Synchronise on invokeMethod 以在委派时实现线程安全调用。我不确定这是否真的线程安全。
android - set.addAll(myArrayList) 不按相同顺序添加列表项
无法弄清楚为什么 set.addAll 会在订单切换的情况下添加我的列表。(我的集合仍然被声明为 LinkedHashSet)
该代码是关于从 SharedPreferences 获取 Set-List,将其转换为 ArrayList,将一项添加到列表,然后将整个列表添加到 Set。
代码看起来像这样:
前两个字符串正确添加(正如我调试的那样),但第三个字符串与第二个字符串切换位置。
输出:
getSharedPrefSet 函数:
解决方法
一种解决方案可以在How can write code to make sharedpreferences for array in android?
java - 有没有办法选择“未指定的行为”而不是 ConcurrentModificationException?
我知道这样的代码
将抛出 ConcurrentModificationException,我明白为什么:直接修改集合可能会干扰迭代器跟踪其位置的能力,例如,通过引用不再是集合的一部分的元素,或者导致它跳过刚刚添加的一个。对于像上面这样的代码,这是一个合理的问题,但是,我想写一些类似的东西
在集合的顺序中, other(o) 保证与 o 相距“远”。在我的特定实现中,它与 o 的距离永远不会少于 47 个“步骤”。此外,如果 condition(o) 为真,则所讨论的循环将保证在到达 other(o) 所在的位置之前很好地短路。因此,迭代器访问的集合的整个部分与被修改的部分完全解耦。此外,LinkedHashSet 的特殊优势(快速随机访问插入和删除,保证迭代顺序)似乎特别适合这种精确的操作。
我想我的问题是双重的:首先,考虑到上述限制,这样的操作是否仍然危险?我认为可能的唯一方法是 Iterator 值提前预加载并缓存,我认为这会提高许多应用程序的性能,但似乎它也会降低许多其他应用程序的性能,因此是一个来自 java.util 的通用类的奇怪选择。但也许我错了。当谈到缓存之类的事情时,我对效率的直觉常常令人怀疑。其次,假设这种事情至少在理论上是安全的,那么除了完全重新实现LinkedHashSet,或者牺牲效率之外,有没有办法实现这个操作?我可以告诉 Collections 忽略我正在修改 Set 的不同部分的事实吗?照常营业?我目前的解决方法是先将元素添加到中间集合,然后在循环完成后将它们添加到主集合,但这效率低下,因为它必须添加两次值。
java - 将linkedhashset作为多值返回到xpage
在我的应用程序中,我将对象的属性定义为 LinkedHashSet。我用多值字段中的值填充的属性:
在 XPage 上,我想显示如下值:
根据员工的类型,此字段可能是单值或多值。
查看 XPage 时,返回值显示如下:
[瑞典、丹麦、爱沙尼亚]
当然,我会将其显示为多值。我应该怎么做才能纠正这个?
java - 如何使用 HashMap 作为 LinkedHashSet
当我运行这个程序时: -
我收到 3 个错误:-
我正在尝试将 HashMap 值用作 LinkedHashSet,但出现这些错误。我该怎么办?