Java 中的連線列表
可以動態增加的有序元素集合稱為 List
集合。它被表示為一個 node
元素,每個節點都包含一個到下一個節點和元素的 reference
。我們可以對列表集合執行的操作包括使用索引的元素遍歷、插入、更新和刪除。
Java 提供了一個 List
介面,該介面為其功能提供了各種方法。列表的多種實現包括 ArrayList
、LinkedList
和 SortedList
。列表的不同屬性可以:
- 成為列表中的重複值。
- 儲存空元素。
- 動態增長,與大小確定的陣列不同。
下面的程式碼說明了如何建立 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()
方法進行列表連線
如上所述,of
是 Stream
介面中的一個靜態方法,它接受元素。所以這些元素可以是原始
資料型別或集合
類。鳥類和動物的集合作為引數傳遞。現在,flatMap
方法在呼叫鏈中被呼叫,其用途是對傳遞的流進行處理和轉換。
flatMap
方法採用 Function
作為其引數。該方法對元素應用變換並展平結果。在這種情況下,傳遞 Collection::stream
以轉換單個流中的元素,該流在處理後返回。現在使用 collect
方法收集流。
輸出與上面的控制檯塊相同,標題為 Way 3
。
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn