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