如何通过值将地图添加到arraylist

时间:2015-01-14 21:09:09

标签: java arraylist add

我正在尝试将类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,而不是通过引用?

2 个答案:

答案 0 :(得分:2)

您似乎正在添加相同的&#39;计数&#39;对象到所有Document实例。而不是counts.clear(),而是将计数分配给相应类型的新实例:

counts = new HashMap<String, Double>

答案 1 :(得分:0)

您每次都会重复使用相同实例 计数 sampleCategory ,因此任何修改都会修改其余部分。

您应该每次都创建一个新对象,然后分配到新文档