我有一个数组列表,里面有 2 个对象,我需要对它们中的最后一个进行多次重复 N 次。 示例。
Arraylist = [Z0123,Z0321]
我需要这个结果
ArrayList = [Z0123,Z0321,Z0321,Z0321,N...]
我正在尝试使用最后一个元素,但这不适用于 N 个元素
for(int i = 0; i < statusCorrigido.size(); i++) {
int tamanho = statusCorrigido.size()-1 ;
listaFinal.add(statusCorrigido.get(i));
listaFinal.add(statusCorrigido.get(tamanho));
}
答案 0 :(得分:7)
您可以将 addAll
与 Collections.nCopies
一起使用。
List<String> list = new ArrayList<>(Arrays.asList("Z0123", "Z0321"));
int n = 5;
list.addAll(Collections.nCopies(n - 1, list.get(list.size() - 1)));
System.out.println(list); // [Z0123, Z0321, Z0321, Z0321, Z0321, Z0321]
答案 1 :(得分:1)
循环时不能更改列表! 首先获取最后一项,然后将其添加到列表中。
Object copy = list.get(list.size() - 1);
for(int i = 0; i < N; i++)
list.add(copy)
答案 2 :(得分:1)
你可以递归地做,看看我会告诉你如何:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList array = new ArrayList();
array.add(5);
array.add(2);
System.out.println(addElement(5, array));
}
public static ArrayList addElement(int stopCondition, ArrayList array){
if (stopCondition == 0){
return array;
}
array.add(array.get(array.size()-1));
stopCondition--;
return addElement(stopCondition, array);
}
}
输出:
[5, 2, 2, 2, 2, 2, 2]