gpt4 book ai didi

将迭代器中的项目添加到数据集时的 Java 错误 - 重复单个值

转载 作者:行者123 更新时间:2023-12-01 13:31:33 27 4
gpt4 key购买 nike

public void operation(Text key, Iterable<HashMapWritable<Text, ArrayListOfIntsWritable>> values, Context context) throws IOException, InterruptedException
{
Set<HashMapWritable<Text, ArrayListOfIntsWritable>> valueSet = new HashSet<HashMapWritable<Text, ArrayListOfIntsWritable>>();
for (HashMapWritable<Text, ArrayListOfIntsWritable> value : values) {
valueSet.add(value);
System.out.println(value);
}
System.out.println("break 1");
System.out.println(valueSet);
System.out.println("break 2");

所以我的操作接受这个可迭代对象,并将其添加到哈希集中,但是如果迭代器的大小为 N,则 valueSet 包含最终值输入的 N 倍。系统 println 给出以下结果作为示例:

 [exec] {Bart_the_Fink.txt.gz=[25]}
[exec] {Bart_the_General.txt.gz=[28]}
[exec] {Bart_the_Lover.txt.gz=[25]}
[exec] {Bart_the_Murderer.txt.gz=[25]}
[exec] {Bart_the_Mother.txt.gz=[23]}
[exec] {Bart_the_Genius.txt.gz=[28]}
[exec] break 1
[exec] [{Bart_the_Genius.txt.gz=[28]}, {Bart_the_Genius.txt.gz=[28]}, {Bart_the_Genius.txt.gz=[28]}, {Bart_the_Genius.txt.gz=[28]}, {Bart_the_Genius.txt.gz=[28]}, {Bart_the_Genius.txt.gz=[28]}]
[exec] break 2

我一生都无法弄清楚为什么

最佳答案

有些迭代器实际上每次都会返回相同的可变对象,但在内部设置为不同的值。复制此类集合的方法是在将每个元素添加到新集合之前复制每个元素(而不是对元素的引用的副本)。

关于将迭代器中的项目添加到数据集时的 Java 错误 - 重复单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21534757/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com