Java 中的连接列表

可以动态增加的有序元素集合称为 List 集合。它被表示为一个 node 元素,每个节点都包含一个到下一个节点和元素的 reference。我们可以对列表集合执行的操作包括使用索引的元素遍历、插入、更新和删除。

Java 提供了一个 List 接口,该接口为其功能提供了各种方法。列表的多种实现包括 ArrayListLinkedListSortedList。列表的不同属性可以:

  • 成为列表中的重复值。
  • 存储空元素。
  • 动态增长,与大小确定的数组不同。

下面的代码说明了如何创建 Java 连接列表:

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ListConcatenation {
    public static void main(String[] args) {
        List<String> birds_list = Stream.of("pigeon", "crow", "squirrel").collect(Collectors.toList()); //Java 8
        List<String> animal_list = List.of("cat", "dog", "rabbit"); //Java 9
        System.out.println("Way 1");
        List<String> stringArrayList = new ArrayList<String>(); //Java7
        stringArrayList.addAll(birds_list);
        stringArrayList.addAll(animal_list);
        System.out.println(stringArrayList);
        System.out.println("Way 2");
        List<String> newList = Stream.concat(birds_list.stream(), animal_list.stream())
                .collect(Collectors.toList());
        System.out.println(newList);
        System.out.println("Way 3");
        List<String> newList2 = Stream.of(birds_list, animal_list)
                .flatMap(Collection::stream)
                .collect(Collectors.toList());
        System.out.println(newList2);
    }
}

在上面的代码块中,前两行初始化了我们想要连接的列表。

列表初始化的第一种方式是在声明本身时赋予元素。因此,根据 Java 8 方法,使用 Stream 接口。流充当数据源的包装器,并提供操作和处理数据的方法。of 静态方法接受并创建所提供元素的顺序流作为参数,并返回元素流。我们执行的操作链在 Java 8 中。collect 方法是一个终端操作,它收集归约后提供的 stream

初始化列表的另一种方法是使用 Java 9 版本。它提供了一种使用创建不可变列表的 List.of 静态工厂方法来初始化列表的便捷方法。

最后,传统上使用 Java 7 版本初始化组合的 List 对象。使用 newList 实例调用 addAll() 方法。该方法将指定的集合附加到其末尾标识的集合。当附加列表成功时,它返回 true。当传递的列表集合为空时,该方法可以抛出 NullPointerException

组合列表实例现在包含 birds_list 集合。类似地,animal_list 实例被添加到 stringArrayList。最后,在打印列表后,它会创建一个一个接一个附加的顺序集合。

下面是代码块的控制台输出:

Way 1
[pigeon, crow, squirrel, cat, dog, rabbit]
Way 2
[pigeon, crow, squirrel, cat, dog, rabbit]
Way 3
[pigeon, crow, squirrel, cat, dog, rabbit]

在 Java 8 中使用 cacat() 方法进行列表连接

图示使用相同的代码块来显示 concat() 方法——它在 Stream 接口中是静态的。当终端操作应用于函数时,它被视为中间操作或延迟初始化。concat() 方法采用两个要连接的流。它从我们作为参数传递的两个流中返回组合列表。通过这个方法,collect 函数被调用以将流转换为所需的格式。该函数将收集器作为参数,在我们的例子中,传递 Collectors.toList() 函数以减少 List 类型的流。

输出将类似于第一个代码块,并在上面的控制台日志中打印在 Way 2 语句下。

在 Java 8 中使用 Stream.of() 方法进行列表连接

如上所述,ofStream 接口中的一个静态方法,它接受元素。所以这些元素可以是原始数据类型或集合类。鸟类和动物的集合作为参数传递。现在,flatMap 方法在调用链中被调用,其用途是对传递的流进行处理和转换。

flatMap 方法采用 Function 作为其参数。该方法对元素应用变换并展平结果。在这种情况下,传递 Collection::stream 以转换单个流中的元素,该流在处理后返回。现在使用 collect 方法收集流。

输出与上面的控制台块相同,标题为 Way 3