如何将数组列表中的对象相乘?

时间:2021-04-14 19:17:09

标签: java arraylist

我有一个数组列表,里面有 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));
    }

3 个答案:

答案 0 :(得分:7)

您可以将 addAllCollections.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]
相关问题