Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何按值将映射添加到arraylist_Java_Arraylist_Add - Fatal编程技术网

Java 如何按值将映射添加到arraylist

Java 如何按值将映射添加到arraylist,java,arraylist,add,Java,Arraylist,Add,我正在尝试将类Document的对象添加到循环中的arraylist中。 问题是,每次对象更改时,列表中以前的内容也会更改 这是我的文档类: public class Document { public Map<String, Double> tokens; public String category; } 但每次我读一个新文档时,数据集的内容都会更改为新文档的值。 那么,如何按值而不是按引用添加文档呢?看起来您正在向所有文档实例添加相同的“计数”对象。将

我正在尝试将类Document的对象添加到循环中的arraylist中。 问题是,每次对象更改时,列表中以前的内容也会更改

这是我的文档类:

public class Document {
    public Map<String, Double> tokens;
    public String category;    
}
但每次我读一个新文档时,数据集的内容都会更改为新文档的值。
那么,如何按值而不是按引用添加文档呢?

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

counts = new HashMap<String, Double>
counts=newhashmap

您每次都对计数和样本类别重复使用相同的实例,因此任何修改都会修改其余的实例


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

是否询问如何复制
文档
对象?在Java中,不能按值传递对象。您可以按值传递对象引用。的可能重复项
doc = new Document();
doc.tokens = counts;
doc.category=sampleCategory;
dataset.add(doc);

counts.clear();
counts = new HashMap<String, Double>