JAVA创建ArrayList<;字符串>;在方法调用中。
我正在开发一个简单的程序,它从一个文件中读取数据,并将其放入一个容器中,该容器定义为一个映射,每个列包含一个ArrayList对象。列的名称放在枚举中 问题是,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
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())代码>?