我正在尝试将类Document的对象添加到循环中的arraylist中。 问题是每次对象改变时,列表的主要内容也会改变
这是我的文档课程:
public class Document {
public Map<String, Double> tokens;
public String category;
}
我有列表数据集:
List<Document> dataset = new ArrayList<Document>();
我将文档的所有标记从文件读取到名为counts的映射。然后按以下步骤操作
doc = new Document();
doc.tokens = counts;
doc.category=sampleCategory;
dataset.add(doc);
counts.clear();
但每次我阅读新文档时,数据集的内容都会更改为新文档的值。 那么如何按值添加doc,而不是通过引用?
答案 0 :(得分:2)
您似乎正在添加相同的&#39;计数&#39;对象到所有Document实例。而不是counts.clear()
,而是将计数分配给相应类型的新实例:
counts = new HashMap<String, Double>
答案 1 :(得分:0)
您每次都会重复使用相同实例 计数和 sampleCategory ,因此任何修改都会修改其余部分。
您应该每次都创建一个新对象,然后分配到新文档。