使用另一行ArrayList的所有元素创建新的ArrayList

时间:2018-12-10 18:10:21

标签: java optimization arraylist

我很想一行完成这一点:

ArrayList<Integer> newArray = new ArrayList<>(oldArray);
newArray.remove(0);
function(newArray);

我已经尝试过了:

function(new ArrayList<>(oldArray.remove(0));

但是它不起作用。可能吗?有什么建议吗?

3 个答案:

答案 0 :(得分:3)

最简单的方法是使用subList

function(new ArrayList<>(oldArray.subList(1, oldArray.size())));

这将创建一个新的ArrayList,并初始化oldArray中除第一个元素外的所有元素。

答案 1 :(得分:1)

在Java 8中,您可以执行以下操作:

function(oldArray.stream().skip(1).collect(Collectors.toList()));

如果您需要ArrayList,请使用以下方法:

function(oldArray.stream().skip(1).collect(Collectors.toCollection(ArrayList::new)));

答案 2 :(得分:1)

要通过接口编程是一种好习惯,请优先使用ListArrayList作为function()方法的参数。

您可以这样做:

function(oldArray.stream().skip(1).collect(toList());

如果您确实需要使用特定的List实现,您仍然可以:

function(oldArray.stream().skip(1).collect(toCollection(ArrayList::new));