我正在尝试将类document的对象添加到循环中的arraylist中。问题是,每次对象更改时,列表的上一个内容也会更改
以下是我的文档类:
public class Document {
public Map<String, Double> tokens;
public String category;
}
我有一个列表数据集:
List<Document> dataset = new ArrayList<Document>();
我将文档的所有标记从一个文件读取到一个名为counts的Map。然后按以下步骤操作
doc = new Document();
doc.tokens = counts;
doc.category=sampleCategory;
dataset.add(doc);
counts.clear();
但每次我读一个新文档时,数据集的内容都会更改为新文档的值。那么,如何按值而不是按引用添加文档呢?
2条答案
按热度按时间s8vozzvw1#
看起来您正在向所有文档示例添加相同的“counts”对象。而不是
counts.clear()
,将计数分配给相应类型的新示例:x759pob22#
每次对counts和samplecategory重用相同的示例,因此任何修改都将修改其余的示例。
每次都应该创建一个新对象,然后将其分配到新文档中。