Maybe somebody could help me. I don't understand what is wrong with my code.
I want loop through the ArrayList, get the index value of each element (index number itself) and add these index values to another array. Don't ask me why =))
Here's my code:
List<Integer> a = new ArrayList<>();
a.add(2);
a.add(5);
a.add(1);
List<Integer> b = new ArrayList<>();
for (int i = 0; i < a.size(); i ) {
b.add(a.indexOf(i));
}
System.out.println("array b: " b);
Output: array b: [-1, 2, 0]
But my expected output is: [0, 1, 2]
Maybe it's a very simple question but I'm really stuck and don't understand why the output is so strange.
CodePudding user response:
Because in your code you are checking what index of the element
like you define loop will iterate 3 time with i=0, i=1 and i =2
when i =0, there are no such element 0 in your array list it has only 2, 5, 1 so it is returning -1
when i = 1 you have an element, so it is returning the value of the index that's 2
when i = 2 again you have an element in array list, so it is returning an index of 2 that's 2
what you can do is
b.add(a.indexOf(i)); replace this line with b.add(a.indexOf(a.get(i)));
but that simply means adding i to new list
CodePudding user response:
The problem is that indexOf
give you the index of the element.
In the loop, the i
has the following values - 0, 1, 2
- On the first iteration, there is no 0, so you have
-1
- On the second iteration, there is 1 on the second index, so you have
2
- On the third iteration, there is 2 on the index 0, so you have
0