このメソッドは、2 つのリストを受け取り、それらを新しいリストに入れ、それを返すことになっています。
たとえば、(1, 2, 3, 4, 5) の最初のリストと (6, 7, 8, 9, 10, 11, 12) の 2 番目のリストの場合、alternate(list1, list2) の呼び出しは次のようになります。 (1, 6, 2, 7, 3, 8, 4, 9, 5, 10, 11, 12) を含むリストを返します。
動作していますが、混乱しているように見えます。物事を単純化する方法はありますか?
public static List<Integer> alternate(List<Integer> list1, List<Integer> list2) {
List<Integer> template = new LinkedList<Integer>();
int i = 0; // counts where list1 goes into new list
int j = 1; // counts where list2 goes into new list
if (list1.size() != 0) { // If first list isn't empty
for (Integer elem1: list1) { // copies all of first list into new list.
template.add(i, elem1);
i++;
}
for(Integer elem2: list2) { // copies every element into new list into every othe element
if (j < template.size()) { // if j is not at point where first list ends.
template.add(j, elem2);
j+=2;
} else {
template.add(j, elem2); // if j is at point where first list ends.
j++;
}
}
} else {
for (Integer elem1: list2) { // If first list is empty
template.add(i, elem1);
i++;
}
}
return template;
}