flybrain
flybrain

Reputation: 119

ArrayList of ArrayList outputting

I am trying to put an arraylist of integers inside an arraylist of arraylist of integers . i tried.

public class test3{
    public static void main(String[] args) throws IOException{
        String text= null;
        ArrayList<ArrayList<Integer>> outerlist = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> innerlist = new ArrayList<>();

        int dept= 17;
        int arrv= 6;
        int[] arr = new int[1000];
        String[] stations = null;    
        FileReader file = new FileReader("test2.txt");
        BufferedReader br = new BufferedReader(file);
        while((text = br.readLine()) != null){
            innerlist.clear();
            stations = text.split(" ");
            //int[] array = Arrays.stream(stations).mapToInt(Integer::parseInt).toArray();

            for(int i = 0 ; i<stations.length ; i++){
                arr[i] = Integer.parseInt(stations[i]);
            }
            for(int j = 0 ; j<stations.length ; j++){
                innerlist.add(arr[j]);
            }
            outerlist.add(innerlist);

        }
        System.out.println(outerlist);
    }
}

it should output [[1, 17, 3, 150, 22], [2, 6, 34, 118], [5, 22, 3, 19, 6, 118, 250, 7], [10, 15, 89, 14, 33, 77, 2, 101, 50, 44]]

but instead it output: [[10, 15, 89, 14, 33, 77, 2, 101, 50, 44], [10, 15, 89, 14, 33, 77, 2, 101, 50, 44], [10, 15, 89, 14, 33, 77, 2, 101, 50, 44], [10, 15, 89, 14, 33, 77, 2, 101, 50, 44]]

the test file i am reading from (test2.txt) contains:

1 17 3 150 22

2 6 34 118

5 22 3 19 6 118 250 7

10 15 89 14 33 77 2 101 50 44

Upvotes: 0

Views: 50

Answers (1)

useless dinosaur
useless dinosaur

Reputation: 658

Just change innerlist.clear() to innerlist = new ArrayList<>();.

When you add inner list to outer list, it's add by memory address, so, when you change inner list, it changes in all the place. But when you do innerlist = new ArrayList<>(); you creates new list, and memory adderss was changed, but it's data isn't changed

Upvotes: 2

Related Questions