Java中List的初始化方法
來源:FreeCodeCamp 本文透過實際範例介紹了 Java 中的各種 List 初始化方法。 Java 語言中的基本資料結構之一是List。它允許開發人員儲存和管理一組元素。在Java中初始化List是開發過程中的重要步驟,因為它定義了List的初始狀態並為進一步的操作做好準備。Java中初始化List的方式有很多種,具體選擇取決於專案的特定需求:- 使用ArrayList建構函數。
- 使用add()方法。
- 使用Arrays.asList()方法。
- 使用Stream.of()方法。
如何使用 ArrayList 建構函式初始化列表
在 Java 中,ArrayList類別是動態數組介面List的實現,可讓您根據需要在清單中新增和刪除元素。ArrayList類別提供了幾個用於建立該類別實例的建構子。創建沒有初始容量的 ArrayList物件的語法是:ArrayList<Object> list = new ArrayList<Object>();
無參構造函數會建立一個空列表 ( List ),初始容量為 10 個元素。如果清單超出此容量, ArrayList類別會透過建立一個更大的新陣列並將元素從舊數組複製到新陣列來自動增加容量。或者,我們可以使用帶有一個整數參數的建構函式來建立一個具有初始容量的ArrayList對象,其中容量是清單的初始容量:
ArrayList<Object> list = new ArrayList<Object>(capacity);
要使用值初始化列表,我們可以使用以集合作為參數的建構子。您可以將實作Collection介面的任何集合物件傳遞給此建構函數,例如另一個ArrayList或LinkedList。集合的元素會依照它們在集合中出現的順序加入新的ArrayList 。以下是如何建立ArrayList並使用採用Collection的建構子用值初始化它的範例:
import java.util.ArrayList;
import java.util.Arrays;
public class Example {
public static void main(String[] args) {
// создаем массив целых чисел
Integer[] array = {1, 2, 3, 4, 5};
// создаем список из массива
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(array));
// печатаем список
System.out.println(list); // [1, 2, 3, 4, 5]
}
}
在此範例中,我們建立一個整數數組,然後將其傳遞給Arrays.asList()方法以建立一個List物件。然後,我們將此List物件傳遞給ArrayList建構函數,以建立一個與原始陣列具有相同元素的新ArrayList 。最後,我們使用System.out.println()方法來列印清單的內容。
如何使用 add() 方法初始化 List
add()方法在 Java 中廣泛用於向集合或清單中添加元素。此方法可用於 Java 中的多種集合類型,包括List、Set和Map。add()方法採用一個參數-要加入集合中的元素。當向vList新增元素時,add()方法特別有用,因為 Java 中的清單是可以包含重複項的有序集合。add()方法可用於將元素新增至清單末尾,使其成為使用一些初始值初始化清單的便捷方法。以下是如何在 Java 中 使用add()方法初始化List的範例:import java.util.ArrayList;
import java.util.List;
public class ListExample {
public static void main(String[] args) {
// создаем новый ArrayList
List<String> myList = new ArrayList<>();
// добавляем элементы в список, используя метод the add()
myList.add("apple");
myList.add("banana");
myList.add("cherry");
// печатаем содержимое списка
System.out.println(myList);
}
}
在此範例中,我們首先建立一個名為myList的新ArrayList。然後,我們使用add()方法將三個字串(“apple”、“banana”和“cherry”)加入列表末尾。然後我們使用System.out.println()方法來列印清單的內容。當我們運行程式時,輸出將是這樣的:
[蘋果、香蕉、櫻桃]
如何使用 Arrays.asList() 方法初始化 List
Java 的內建Arrays.asList()方法將陣列轉換為清單。此方法接受一個陣列作為參數並傳回一個List物件。Arrays.asList()方法傳回的物件是一個固定大小的列表,這表示我們無法從中新增或刪除元素。要在 Java 中使用Arrays.asList()方法初始化List,我們必須遵循以下步驟: 首先,我們宣告一個要用來初始化列表的元素陣列。例如,假設我們要初始化一個包含三個元素的清單:「apple」、「banana」和「orange」。在這裡我們可以宣告一個這樣的陣列:String[] fruits = {"apple", "banana", "orange"};
然後我們呼叫Arrays.asList()方法並將陣列作為參數傳遞。這將會傳回一個包含陣列元素的 List物件。
List<String> fruitList = Arrays.asList(fruits);
現在我們可以使用FruitList物件來存取列表的元素。例如,我們可以迭代列表並列印每個元素:
for (String fruit : fruitList) {
System.out.println(fruit);
}
結論:
蘋果 香蕉 橘子
需要注意的是,Arrays.asList()方法不會建立新的List對象,而是傳回原始陣列的List對象表示形式。這意味著如果我們更改原始數組,則更改也將反映在List物件中。例如:
fruits[0] = "pear";
System.out.println(fruitList.get(0)); // Вывод: pear
在上面的範例中,我們將水果數組的第一個元素更改為“pear”。當我們造訪fruitList物件的第一個元素時,我們也會得到“pear”,因為fruitList只是fruits陣列的表示。
如何使用 Stream.of() 方法初始化 List
Stream.of()是 Java 8 及更高版本的java.util.stream套件中提供的便利方法。它用於建立任何類型的元素流,包括基本類型、陣列和物件。此方法接受一個或多個參數並傳回由這些參數組成的流。Stream.of()方法的語法:Stream<T> stream = Stream.of(t1, t2, t3, ..., tn);
這裡T是流中元素的類型,t1以及tn之前是應該包含在流中的元素。要使用Stream.of()方法在 Java 中初始化List,您需要執行下列操作:
-
首先導入java.util.stream套件。
-
然後使用建構子建立所需的 ArrayList 類型的列表,例如:
List<String> myList = new ArrayList<>();
-
使用Stream.of()方法初始化列表,將所需的元素作為參數傳遞,然後使用collect()方法將流元素收集到列表中,例如:
myList = Stream.of("Apple", "Banana", "Cherry", "Date") .collect(Collectors.toList());
-
然後我們可以列印清單來檢查其內容。
System.out.println(myList);
結論:
[蘋果、香蕉、櫻桃、椰棗]
結論
在 Java 中初始化清單是一項相當常見的程式設計任務,有多種方法可以實現。透過遵循本文中所述的步驟,我們可以使用Stream.of()方法輕鬆建立並初始化具有所需元素的List。這種方法簡潔靈活,當我們需要初始化包含少量元素的清單時特別有用。快樂編碼!提高 Java 生產力的 7 個簡單技巧:提示和範例
來源:Medium 這裡精選了七個實用技巧,如果遵循這些技巧,將有助於提高 Java 開發人員的工作效率。 您可以透過遵循一些簡單的技巧來提高 Java 應用程式的效能。1. 使用原始型別而不是物件:
// Плохо: использование an object Integer
Integer count = 0;
for (int i = 0; i < 1000000; i++) {
count++;
}
// Хорошо: использование примитива int
int count = 0;
for (int i = 0; i < 1000000; i++) {
count++;
}
2. 避免創建不必要的物件:
// Плохо: использование конкатенации строк с помощью '+'
String str = "";
for (int i = 0; i < 10000; i++) {
str += i;
}
// Хорошо: использование StringBuilder
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
sb.append(i);
}
String str = sb.toString();
3.使用正確的資料結構:
// Плохо: использование List для частого поиска
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
// ...
if (names.contains("Charlie")) {
// ...
}
// Хорошо: использование HashSet для частого поиска
Set<String> names = new HashSet<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
// ...
if (names.contains("Charlie")) {
// ...
}
4. 最小化方法呼叫:
// Плохо: вызов метода внутри цикла
for (int i = 0; i < 1000000; i++) {
doSomething(i);
}
// Хорошо: выносим метод за пределы цикла
for (int i = 0; i < 1000000; i++) {
// ...
}
doSomething(i);
5.使用static和final修飾符:
// Плохо: создание ненужных экземпляров an objectов
public class MyClass {
private int value;
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
MyClass obj = new MyClass();
obj.setValue(10);
int value = obj.getValue();
// Хорошо: использование статических и финальных модификаторов
public class MyClass {
private static final int DEFAULT_VALUE = 0;
private final int value;
public MyClass(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
MyClass obj = new MyClass(10);
int value = obj.getValue();
6. 使用適合情況的演算法:
// Плохо: использовать линейный поиск для большой коллекции
List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// ...
int target = 7;
for (int i = 0; i < nums.size(); i++) {
if (nums.get(i) == target) {
// ...
}
}
// Хорошо: использование бинарного поиска для большой коллекции
List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// ...
int target = 7;
int index = Collections.binarySearch(nums, target);
if (index >= 0) {
// ...
}
7. 優化你的週期:
// Плохо: вызов метода внутри цикла
for (int i = 0; i< 1000000; i++) {
String str = getString(i);
// ...
}
// Хорошо: минимизация вызовов методов в цикле
for (int i = 0; i < 1000000; i++) {
String str = "String " + i;
// ...
}
這些只是一些可以提高您的工作效率的簡單 Java 技巧。請記住,優化效能可能具有挑戰性,開發人員通常需要分析其程式碼以識別效能瓶頸。
GO TO FULL VERSION