如何按值向arraylist添加Map

monwx1rj  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(321)

我正在尝试将类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();

但每次我读一个新文档时,数据集的内容都会更改为新文档的值。那么,如何按值而不是按引用添加文档呢?

s8vozzvw

s8vozzvw1#

看起来您正在向所有文档示例添加相同的“counts”对象。而不是 counts.clear() ,将计数分配给相应类型的新示例:

counts = new HashMap<String, Double>
x759pob2

x759pob22#

每次对counts和samplecategory重用相同的示例,因此任何修改都将修改其余的示例。
每次都应该创建一个新对象,然后将其分配到新文档中。

相关问题