gpt4 book ai didi

java - 可迭代到 ArrayList 元素更改

转载 作者:可可西里 更新时间:2023-11-01 15:02:48 25 4
gpt4 key购买 nike

所以我正在实现 mapreduce 作业,这意味着我正在处理键值对。

我有变量

Iterable<FreqDataWritable> values

FreqDataWritable 是一个包含信息片段的对象,但现在我只关心它包含的一条信息,即 getFilename() 访问的字符串。

我有以下循环:

ArrayList<String> filenames = new ArrayList<String>();

for(FreqDataWritable i : values) {
filenames.add(i.getFilename());
}

现在我要做的就是打印数组列表文件名中的值。

for(int i = 0; i < filenames.size(); i++) {
System.out.println(filenames.get(i));
}

但是,当我这样做时,文件名中的所有内容都是相同的。唯一打印出来的是多次打印的单个文件名。

我的原始代码比这更复杂,但为了帮助我简化了它。有人知道怎么修这个东西吗?

谢谢

最佳答案

我想通了。 Hadoop 有一个奇怪的内存使用,所以当我第一次迭代这些值时,它只是一遍又一遍地将相同的对象添加到数组列表中。

相反,我需要这样做:

for(FreqDataWritable i : values) {
filenames.add(new String(i.getFilename()));
}

关于java - 可迭代到 ArrayList 元素更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23329173/

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