Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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 - Fatal编程技术网

JAVA创建ArrayList<;字符串>;在方法调用中。

JAVA创建ArrayList<;字符串>;在方法调用中。,java,arraylist,Java,Arraylist,我正在开发一个简单的程序,它从一个文件中读取数据,并将其放入一个容器中,该容器定义为一个映射,每个列包含一个ArrayList对象。列的名称放在枚举中 问题是,ArrayList是原始的,而我的数据是字符串类型 import java.io.*; import java.util.ArrayList; import java.util.Map; import java.util.TreeMap; import static lista3.ColumnName.*; public class Z

我正在开发一个简单的程序,它从一个文件中读取数据,并将其放入一个容器中,该容器定义为一个映射,每个列包含一个ArrayList对象。列的名称放在枚举中

问题是,ArrayList是原始的,而我的数据是字符串类型

import java.io.*;
import java.util.ArrayList;
import java.util.Map;
import java.util.TreeMap;
import static lista3.ColumnName.*;

public class Zad2 {


    //Name,Surname,Salary,District,Position
    Map<ColumnName, ArrayList> columnHolder = new TreeMap<>();

    //combination of a map, holding ArrayLists, represents an extendable table.
    //Notation holder.get(ColumnName c).get(index j) represents getting the value from specified column
    //and row index j

    //an iterable holder of columns
    private final static ColumnName[] ITERABLE_COLUMN_NAMES = ColumnName.values();

    //initialization block for all columns present in ColumnName Enum.
    {
        for (ColumnName c: ITERABLE_COLUMN_NAMES) {
            columnHolder.put(c, new ArrayList<String>());
        }
    }
}
import java.io.*;
导入java.util.ArrayList;
导入java.util.Map;
导入java.util.TreeMap;
导入静态lista3.ColumnName.*;
公开课Zad2{
//姓名、姓氏、薪水、地区、职位
Map columnHolder=newtreemap();
//包含ArrayList的映射的组合表示可扩展表。
//符号holder.get(ColumnName c).get(index j)表示从指定列获取值
//和行索引j
//柱的可拆卸支架
private final static ColumnName[]ITERABLE_COLUMN_NAMES=ColumnName.values();
//ColumnName枚举中存在的所有列的初始化块。
{
for(ColumnName c:ITERABLE_COLUMN_name){
columnHolder.put(c,newarraylist());
}
}
}
我的问题是-如果我在初始化块的for循环中放入一个ArrayList对象的声明并将其放入映射中,它不会引用同一个对象吗

//initialization block for all columns present in ColumnName Enum.
    {
        for (ColumnName c: ITERABLE_COLUMN_NAMES) {
            ArrayList<String> a = new ArrayList<>();
            columnHolder.put(c, a);
        }
    }
//ColumnName枚举中存在的所有列的初始化块。
{
for(ColumnName c:ITERABLE_COLUMN_name){
ArrayList a=新的ArrayList();
柱形夹持器。放置(c,a);
}
}

在for循环中,您每次都在创建一个全新的
ArrayList
,因此它不会引用相同的
ArrayList
对象


在您的代码中,如果您在
columnHolder
中已经有一个名为
abc
的键,并且您试图
将另一个
ArrayList
放在同一名称下,它将用该名称覆盖
columnHolder
中先前的
ArrayList
。这就是映射所做的。

new ArrayList()
中的
new
每次都创建一个
new
数组。我在问columnHolder.get(key1)是否会引用columnHolder.get(key2),如果放置在映射中的ArrayLists引用了相同的对象,那么即使名称相同,将创建尽可能多的分离对象,就像ColumnName中有c一样?@Embid123您的意思是因为所有ArrayList都被命名为
a
?将这两行组合起来是否可以解决问题:
columnHolder.put(c,new ArrayList())