二维arraylist java

时间:2015-09-03 20:38:21

标签: java arrays multidimensional-array arraylist

我正在尝试将文本文件中的数据保存到二维arraylist中。这是我的2d数组列表

private ArrayList<ArrayList<String>> students = new ArrayList<ArrayList<String>>();

这是我的arraylist

private ArrayList<String> a = new ArrayList<String>();

在这里,我正在尝试用数据填充我的列表

        public void addStudent(String student){
            a.add(student);
        }
        public void addToList(){
                students.add(a); // 


                System.out.println("TEST1 " + students);

                a.clear();

                System.out.println("TEST2 " + students);
            }

这是我的阅读方法

public void read(){

        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("C:\\Users\\SuperUser\\IdeaProjects\\Test\\src\\data.txt"));
            String line = "";
            int num = 0;
            while((line = br.readLine()) != null){
                String [] tokens = line.split("\\s+");
                if(tokens.length == 2){
                    if(num != 0){
                        a.addToList();
                    }
                    num++;
                }else{
                    a.addStudent(tokens[0]);
                }
            }
           // a.addToList();
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

这是我的输出

TEST1 [[Antanas, Kazys, Petras, Sonata]]
TEST2 [[]]
TEST1 [[Jonas, Martynas, Arturas, Vacys, Robertas], [Jonas, Martynas, Arturas, Vacys, Robertas]]
TEST2 [[], []]
TEST1 [[Mykolas, Aldona, Asta, Viktoras, Arturas, Vytas], [Mykolas, Aldona, Asta, Viktoras, Arturas, Vytas], [Mykolas, Aldona, Asta, Viktoras, Arturas, Vytas]]
TEST2 [[], [], []]

那么为什么在清除我的列表a.clear()后,它会影响我的二维arraylist?为什么我丢失了我的数据?

修改 到AbbéRésina

Information 4
Antanas 1 6.95
Kazys 2 8.65
Petras 2 7.01
Sonata 3 9.13
Economy 5
Jonas 1 6.95
Martynas 3 9.13
Arturas 2 7.01
Vacys 2 8.65
Robertas 3 6.43
Robotics 6
Mykolas 1 6.95
Aldona 3 9.13
Asta 2 7.01
Viktoras 2 8.65
Arturas 5 8.32
Vytas 3 7.85
Literature 4
Jonas 1 6.95
Zigmas 3 9.13
Arturas 2 7.01
Simas 3 6.43

1 个答案:

答案 0 :(得分:4)

您要为{&#34; ArrayList&#34;添加相同的2D ArrayList引用。

也许您每次想要添加新学生时都可以尝试复制ArrayList

或者,每次要添加新学生时,都可以声明一个新的ArrayList。