一.在Java中,集合(如List
、Set
等)和数组可以相互转换。以下是常见的转换方式:
1. 数组转集合
1.1 使用 Arrays.asList()
方法
Arrays.asList()
方法可以将数组转换为 List
集合。注意,返回的 List
是一个固定大小的列表,不能进行添加或删除操作。
import java.util.Arrays;
import java.util.List;
public class ArrayToListExample {
public static void main(String[] args) {
String[] array = {"apple", "banana", "cherry"};
List<String> list = Arrays.asList(array);
System.out.println(list); // 输出: [apple, banana, cherry]
}
}
1.2 使用 Collections.addAll()
方法
如果你需要一个可变的集合,可以使用 Collections.addAll()
方法将数组元素添加到集合中。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArrayToMutableListExample {
public static void main(String[] args) {
String[] array = {"apple", "banana", "cherry"};
List<String> list = new ArrayList<>();
Collections.addAll(list, array);
System.out.println(list); // 输出: [apple, banana, cherry]
}
}
2. 集合转数组
2.1 使用 toArray()
方法
集合类(如 List
)提供了 toArray()
方法,可以将集合转换为数组。
import java.util.ArrayList;
import java.util.List;
public class ListToArrayExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
String[] array = list.toArray(new String[0]);
for (String fruit : array) {
System.out.println(fruit); // 输出: apple, banana, cherry
}
}
}
- toArray(T[] a) 方法的作用
toArray(T[] a) 方法的作用是将集合中的元素复制到一个数组中。它的参数是一个数组(T[] a),这个数组的作用是:
如果传入的数组长度足够大(即数组的长度大于或等于集合的大小),则集合的元素会被复制到这个数组中。
如果传入的数组长度不够(即数组的长度小于集合的大小),则会创建一个新的数组,并将集合的元素复制到新数组中。
- new String[0] 的含义
new String[0] 创建了一个长度为 0 的 String 数组。
传入一个长度为 0 的数组,是为了告诉 toArray() 方法:“我不确定数组的长度,请根据集合的大小自动创建一个合适长度的数组。”
- 为什么用 new String[0]?
简洁性:new String[0] 是一种简洁的写法,避免了手动计算集合的大小。
性能:虽然传入一个长度为 0 的数组会触发 toArray() 方法创建一个新数组,但现代 JVM 对这种操作进行了优化,性能开销很小。
通用性:无论集合的大小是多少,new String[0] 都能正常工作。
2.2 使用 toArray(T[] a)
方法
toArray(T[] a)
方法允许你指定返回的数组类型。如果传入的数组长度足够,则使用该数组;否则,会创建一个新的数组。
import java.util.ArrayList;
import java.util.List;
public class ListToArrayExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
String[] array = list.toArray(new String[list.size()]);
for (String fruit : array) {
System.out.println(fruit); // 输出: apple, banana, cherry
}
}
}
3. 注意事项
- 数组转集合:
Arrays.asList()
返回的List
是一个固定大小的列表,不能进行添加或删除操作。如果需要可变集合,可以使用Collections.addAll()
方法。 - 集合转数组:
toArray()
方法返回的数组是一个新数组,对数组的修改不会影响原集合。
通过这些方法,可以方便地在Java中实现集合和数组之间的转换。
二.Collections 和 Arrays 是 Java 中两个非常实用的工具类,它们提供了许多方便的方法来操作集合和数组。以下是一些常见的用法示例:
Collections 工具类的用法
排序
使用 Collections.sort 方法可以对列表进行排序。如果列表中的元素实现了 Comparable 接口,可以直接排序;否则,可以提供一个 Comparator。
import java.util.*;
public class CollectionsExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 3, 8, 1, 2);
Collections.sort(numbers);
System.out.println(numbers); // 输出: [1, 2, 3, 5, 8]
}
}
查找最小值和最大值
使用 Collections.min 和 Collections.max 方法可以查找集合中的最小值和最大值。
import java.util.*;
public class CollectionsMinMaxExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 3, 8, 1, 2);
Integer min = Collections.min(numbers);
Integer max = Collections.max(numbers);
System.out.println("Min: " + min); // 输出: Min: 1
System.out.println("Max: " + max); // 输出: Max: 8
}
}
反转列表
使用 Collections.reverse 方法可以反转列表中的元素顺序。
import java.util.*;
public class CollectionsReverseExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "cherry");
Collections.reverse(words);
System.out.println(words); // 输出: [cherry, banana, apple]
}
}
填充集合
使用 Collections.fill 方法可以用指定的值填充列表中的所有元素。
import java.util.*;
public class CollectionsFillExample {
public static void main(String[] args) {
List<String> words = new ArrayList<>(Arrays.asList("a", "b", "c"));
Collections.fill(words, "x");
System.out.println(words); // 输出: [x, x, x]
}
}
Arrays 工具类的用法
排序
使用 Arrays.sort 方法可以对数组进行排序。
import java.util.Arrays;
public class ArraysSortExample {
public static void main(String[] args) {
Integer[] numbers = {5, 3, 8, 1, 2};
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers)); // 输出: [1, 2, 3, 5, 8]
}
}
查找
使用 Arrays.binarySearch 方法可以在已排序的数组中查找元素。
import java.util.Arrays;
public class ArraysBinarySearchExample {
public static void main(String[] args) {
Integer[] numbers = {1, 2, 3, 5, 8};
int index = Arrays.binarySearch(numbers, 5);
System.out.println("Index of 5: " + index); // 输出: Index of 5: 3
}
}
复制数组
使用 Arrays.copyOf 方法可以复制数组。
import java.util.Arrays;
public class ArraysCopyExample {
public static void main(String[] args) {
Integer[] original = {1, 2, 3};
Integer[] copy = Arrays.copyOf(original, original.length);
System.out.println(Arrays.toString(copy)); // 输出: [1, 2, 3]
}
}
数组转换为列表
使用 Arrays.asList 方法可以将数组转换为列表。
import java.util.Arrays;
import java.util.List;
public class ArraysToListExample {
public static void main(String[] args) {
String[] fruits = {"apple", "banana", "cherry"};
List<String> fruitList = Arrays.asList(fruits);
System.out.println(fruitList); // 输出: [apple, banana, cherry]
}
}