问题标签 [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.
java - 读取文件夹中的文件,然后将每个用户 ID 存储在linkedhashset 中
我身边有100 files in a folder
。我正在尝试阅读所有这些文件one by one
。每个文件都有这样的数据,每一行都类似于一个用户 ID。
所以我需要逐行读取该文件,然后将每个用户 ID 存储在LinkedHashSet
. 我可以使用以下代码从特定文件夹中读取所有文件。但是使用我编写的以下 java 代码,我不确定如何逐行读取这些文件,然后将每个用户 id 存储在LinkedHashSet
?
任何帮助将不胜感激?还有更好的方法来做同样的过程吗?
java - 将文件合并到一个新的大文件中,直到用户 id 的数量变为 1000 万
我在一个文件夹中有大约 100 个文件。每个文件都有这样的数据,每一行都类似于一个用户 ID。
我正在尝试继续将该文件夹中的文件合并到一个新的大文件中,直到该新大文件中的用户 ID 总数变为 1000 万。
我能够从特定文件夹中读取所有文件,然后继续从链接哈希集中的这些文件中添加用户 ID。然后我想看看hashset的大小是否为1000万,如果是1000万,那么将所有这些用户ID写入一个新的文本文件。这是可行的解决方案吗?
这 1000 万个数字应该是可配置的。将来,如果我需要将那 1000 万换成 1o 5000 万,那么我应该能够做到。
下面是我到目前为止的代码
任何帮助将不胜感激?还有更好的方法来做同样的过程吗?
java - 有效地获取 LinkedHashSet 中最近插入的元素
根据LinkedHashSet的 Javadoc,它将通过在内部使用双向链表来保持插入元素的插入顺序。
它维护一个双向链表,贯穿其所有条目。这个链表定义了迭代顺序,也就是元素被插入到集合中的顺序(insertion-order)
如果我想获取第一个插入的元素,我可以使用如下代码:
这将为我提供 O(1) 中集合中的第一个插入元素。
我正在尝试解决一个问题,这需要我在 O(1) 中访问集合中最近插入的元素,并且假设集合中不会插入任何重复的元素。例如,
由于它是集合中的双向链表,因此最近的元素似乎应该是双向链表中的最后一个元素,并且如果有一些 API 来获取它,应该能够在 O(1) 中访问它。
我的问题是:JDK 中有什么方法可以做到这一点,还是我需要创建自己的 ReversedIteratingLinkedHashSet 来做到这一点?
基本上,我尝试为所有操作找到具有 O(1) 时间复杂度的 Set 数据结构,包括:插入/删除/搜索/检查集合中最近插入的元素。内置的 LinkedHashSet 似乎非常适合在内部进行非常小的修改,但我不确定这是否可以使用默认的 JDK 类 API 来完成。
注意:我查看了 JDK 的源代码,知道 LinkedHashSet 在内部是用 LinkedHashMap 实现的,如果有任何解决方案可以使用 LinkedHashMap 来访问 O(1) 中最近插入的元素,它对我也很有用。
非常感谢。
linkedhashset - 如何使用 Hashset 创建 Linkedhashset?
我在采访中被问到这个问题“如何使用 Hashset 创建 Linkedhashset?” 有人知道答案吗?
java - Java:无法修复所需的未经检查的转换 java.util.Collection
我有一个字符串向量oldV,并且想要第二个向量,它是相同的但已删除所有重复项。以下是有效的,因为它编译并导致 Vector 中删除了重复项:
但是,它会生成两个未经检查的转换警告:
在这两种情况下,^ 都直接位于“new LinkedHashSet”中的“new”下方。
我不知道如何解决这些警告。
java - HashSet 和 LinkedHashSet
所以我正在开发一个程序,我需要存储原始类型的唯一客户数据。在这方面,我一直在阅读一本关于数据结构的书,得出的结论是使用HashSet
.
现在这本书指出, a 的HashSet
插入和删除速度比 a 快LinkedHashSet
。现在这让我有点困惑。我认为两者之间的唯一区别是 aLinkedHashSet
使用了一些额外的内存,使用 aLinkedList
来保持秩序。
谁能详细说明?
java - Android HashSet 无法转换为 LinkedHashSet
我有以下示例代码。应用程序第一次安装成功。但是,它会在重新安装时引发错误。
我在下面粘贴了重新安装应用程序时产生的错误。
我想明白为什么一个被保存的LinkedHashSet
不能被施放回去LinkedHashSet
。为什么它会自动HashSet
被Android转换为?
java - Java——通过键访问值并维护键值对的顺序
我将处理一系列键值对,并将它们返回为 a Set
,或者更确切地说, a LinkedHashSet
。我将使用相同的键合并元素,并在进行过程中处理值。我产生的输出将保留输入中的键序列。
我可以想到2个选择:
1.) 在 a 上执行所有操作LinkedHashMap
,并将结果转换为LinkedHasSet
- 加载LinkedHashMap
到集合并从该集合中创建一个LinkedHashSet
。
2.) 使用 aHashMap
和 a LinkedHashSet
。
HashMap
用于处理——快速访问和更新值,LinkedHashSet
维护键的序列并确保键的唯一性。最后,从 中读取最终值HashMap
并创建另一个LinkedHashSet
,这次是键值对,而不仅仅是键,然后交付它。
(1) 对我来说似乎对 (2) 非常有利。
理想情况下,我希望能够在 a 上完成所有操作LinkedHashSet
——将键值对保留在 a 上LinkedHashSet
,但只能通过键处理其元素——以便能够
i.) 访问值对,以及 ii.) 保持键的唯一性
在键上而不是键值对上。但是LinkedHashSet
没有那个,API 中没有其他结构可以做到这一点。
我在这里错过了什么吗?
还有其他选择吗?
提前致谢。
在 API 上并不那么尖锐——想确定一下。
java - 使用 Jackson ObjectMapper 进行序列化时发生 ClassCastException - java.lang.object 作为 LinkedHashset 中使用的基础 HashMap 中的值
是的,标题很混乱,我知道!
我正在使用 Jackson ObjectMapper 序列化 MyClass 类型的 LnkedHashSet。这就是将内容添加到该 HashSet 的方式
现在,当 Jackson 尝试序列化它时,它会抛出一个 ClassCastException 说 java.lang.Object 不能强制转换为 MyClass。我调试了 LinkedHashSet 中的“添加”功能并将其添加到 Map 中,键为 MyClass,值作为虚拟对象
所以,Jackson 得到的最终 LinkedHashSet 包含了一个 HashMap,它又是一个 MyClass-Object 的键值对,而这个 Object 给了我一个噩梦。
任何关于如何解决这个问题的想法都将受到高度赞赏。我是新手,如果有人可以提供帮助,我会很高兴,谢谢!
java - 如何从java中的链接哈希集中删除元素?
我想知道从链接哈希集中删除元素的不同方法。我尝试了以下代码
我得到以下输出
我想念什么?提前致谢。
PS我也尝试过 iterator.remove() 方法但得到了非法状态异常
编辑
我才知道我必须使用迭代器删除方法。那么 Link Hash Set 删除方法有什么用呢?在什么情况下我们应该使用这种方法?