如何按值将映射添加到arraylist
how to add a map to arraylist, by value
我正在尝试将 class 文档的对象添加到循环中的数组列表中。
问题是每次对象改变时,列表中的先前内容也会改变
这是我的文档 class:
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();
但每次我阅读新文档时,数据集的内容都会更改为新文档的值。
那么如何按值而不是按引用添加文档?
您似乎在向所有文档实例添加相同的 'counts' 对象。将计数分配给相应类型的新实例,而不是 counts.clear()
:
counts = new HashMap<String, Double>
您每次都为 counts 和 sampleCategory 重复使用 相同实例,因此任何修改将修改其余部分。
你应该每次创建一个新对象,然后分配到新文档。
我正在尝试将 class 文档的对象添加到循环中的数组列表中。 问题是每次对象改变时,列表中的先前内容也会改变
这是我的文档 class:
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();
但每次我阅读新文档时,数据集的内容都会更改为新文档的值。 那么如何按值而不是按引用添加文档?
您似乎在向所有文档实例添加相同的 'counts' 对象。将计数分配给相应类型的新实例,而不是 counts.clear()
:
counts = new HashMap<String, Double>
您每次都为 counts 和 sampleCategory 重复使用 相同实例,因此任何修改将修改其余部分。
你应该每次创建一个新对象,然后分配到新文档。