I am writing a "Mirror" method which duplicate the message backward, and add to the original ArrayList if the size is even.
public ArrayList<Integer> mirror(ArrayList<Integer> mr) {
if (mr.size() % 2 == 0) {
for (int i = mr.size() - 1; i > 0; i--) {
mr.add(mr.get(i));
}
}
return mr;
}
This one does not give 1 though.
e.g.
[1,2,3,4]->[1,2,3,4,4,3,2]
If i>0 is changed to i>=0, then
[1,2,3,4]-> [1, 2, 3, 4, 4, 3, 2, 1, 1, 2, 3, 4, 4, 3, 2, 1]
How are you calling mirror?
When I changed i > 0 to i >= 0 I get the results you're expecting.
public static void main(String[] args) throws Exception {
ArrayList<Integer> list = new ArrayList(Arrays.asList(1, 2, 3, 4));
System.out.println(mirror(list));
}
public static ArrayList<Integer> mirror(ArrayList<Integer> mr) {
if (mr.size() % 2 == 0) {
for (int i = mr.size() - 1; i >= 0; i--) {
mr.add(mr.get(i));
}
}
return mr;
}
Results:
[1, 2, 3, 4, 4, 3, 2, 1]
Actually why check if it's an even sized list? Just mirror any size.
public static void main(String[] args) throws Exception {
ArrayList<Integer> list = new ArrayList(Arrays.asList(1, 2, 3));
System.out.println(mirror(list));
}
public static ArrayList<Integer> mirror(ArrayList<Integer> mr) {
for (int i = mr.size() - 1; i >= 0; i--) {
mr.add(mr.get(i));
}
return mr;
}
Results:
[1, 2, 3, 3, 2, 1]
You just need to do this:
Code:
import java.util.ArrayList;
import java.util.Collections;
public class Snippet {
public static ArrayList<Integer> mirror(ArrayList<Integer> mr) {
if (mr.size() % 2 == 0) {
ArrayList<Integer> copy = new ArrayList<>();
copy.addAll(mr); // Copy original list
Collections.reverse(copy); // Reverse copy
mr.addAll(copy); // Append reversed copy to original list
}
return mr;
}
public static void main(String [] args) {
ArrayList<Integer> lst = new ArrayList<Integer>();
lst.add(1);
lst.add(2);
lst.add(3);
lst.add(4);
lst = mirror(lst);
for(Integer n : lst) {
System.out.print(n + " ");
}
}
}
Output:
1 2 3 4 4 3 2 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With