将多个项目添加到Java数组列表中

评论 0 浏览 0 2018-07-30

1.概述ArrayList

在这个快速教程中,我们将展示如何向一个已经初始化的ArrayList添加多个项目。

关于ArrayList的使用介绍,请参考这里的这篇文章

2.全部添加

首先,我们要介绍一种简单的方法,将多个项目添加到ArrayList中。

首先,我们将使用addAll(),它需要一个集合作为它的参数。

List<Integer> anotherList = Arrays.asList(5, 12, 9, 3, 15, 88);
list.addAll(anotherList);

重要的是要记住,在第一个列表中添加的元素将引用与anotherList中的元素相同的对象。

出于这个原因,对其中一个要素的每一次修改都会影响到这两份名单。

3. Collections.addAll

Collections类完全由对集合进行操作或返回集合的静态方法组成。

其中之一是addAll,它需要一个目标列表,要添加的项目可以单独指定,也可以作为一个数组。

这里是一个如何用单个元素使用的例子。

List<Integer> list = new ArrayList<>();
Collections.addAll(list, 1, 2, 3, 4, 5);

还有一个是以两个数组为例来说明操作。

List<Integer> list = new ArrayList<>();
Integer[] otherList = new Integer[] {1, 2, 3, 4, 5};
Collections.addAll(list, otherList);

与上节解释的方式类似,这里的两个列表的内容将指的是相同的对象。

4.使用Java 8

这个版本的Java通过增加新的工具打开了我们的可能性。我们将在接下来的例子中探讨的是Stream

List<Integer> source = ...;
List<Integer> target = ...;

source.stream()
  .forEachOrdered(target::add);

这种方式的主要优点是有机会使用跳过和过滤器。在下一个例子中,我们要跳过第一个元素。

source.stream()
  .skip(1)
  .forEachOrdered(target::add);

可以根据我们的需要来过滤这些元素。例如,整数值。

source.stream()
  .filter(i -> i > 10)
  .forEachOrdered(target::add);

最后,在有些情况下,我们希望以一种无效安全的方式工作。对于这些情况,我们可以使用Optional

Optional.ofNullable(source).ifPresent(target::addAll)

在上面的例子中,我们通过addAll方法,将元素从source添加到target

5.总结

在这篇文章中,我们探讨了向已经初始化的ArrayList添加多个项目的不同方法。

一如既往,代码样本可以在GitHub上找到。

最后更新2023-03-11
0 个评论
标签