java - 如何按值将映射添加到数组列表

标签 java arraylist addition

我正在尝试将 Document 类的对象添加到循环中的数组列表中。 问题是每次对象发生变化时,列表之前的内容也会发生变化

这是我的文档类:

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();

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

最佳答案

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

counts = new HashMap<String, Double>

关于java - 如何按值将映射添加到数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27952483/

相关文章:

java - Vertx 和 Spring Boot 的区别

java - Arraylist 匹配并返回一个 boolean 结果

java - 将多个编号的对象添加到 ArrayList

java - 在java中读取csv文件(其中包含字符,整数和特殊符号)并从中提取整数

java - 如何使用 ArrayList 值执行算术运算

algorithm - 以 n 为底数相加

Python-向文件名添加单词

java - JMS 消息未使用 spring JMSTemplate 接收?

java - 如何使用 JavaParser 创建一个新对象作为 AST 节点?

java - Android 截击 : Headers are not appended