您的位置:首页 > 汽车 > 新车 > 深圳营业执照网上申报入口_安阳网站优化_一站式网站建设_揭阳百度快照优化排名

深圳营业执照网上申报入口_安阳网站优化_一站式网站建设_揭阳百度快照优化排名

2024/12/26 13:55:27 来源:https://blog.csdn.net/cheng_ji/article/details/144499629  浏览:    关键词:深圳营业执照网上申报入口_安阳网站优化_一站式网站建设_揭阳百度快照优化排名
深圳营业执照网上申报入口_安阳网站优化_一站式网站建设_揭阳百度快照优化排名

在Java中,List 和 数组(Array) 之间的转换是一个常见的操作。由于它们是不同的数据结构,Java提供了一些方法来在它们之间进行转换。我们会从List到数组和数组到List两种情况分别讨论。

1. List 转 数组

假设你有一个 `List` 类型的对象,想要将其转换为一个数组。你可以使用 List`类的 toArray()方法。

 (a) List 转 数组(Object类型)

最常见的转换是将一个 `List` 转换为一个普通的对象数组 `Object[]`,方法如下:

import java.util.List;
import java.util.ArrayList;public class ListToArrayExample {public static void main(String[] args) {// 创建一个ListList<String> list = new ArrayList<>();list.add("A");list.add("B");list.add("C");// 将List转换为数组(Object类型)Object[] array = list.toArray();// 输出结果for (Object obj : array) {System.out.println(obj);}}
}

在这个例子中,`list.toArray()` 返回的是一个 `Object[]` 类型的数组。此时数组的元素类型是 `Object`,如果需要更具体的类型,可以强制转换。

 (b) List 转 数组(指定类型)

如果你知道 List 中存储的是某个具体类型的元素(比如 `String`),你可以使用 `toArray(T[] a)` 方法来指定数组的类型,从而避免转换时的强制类型转换:

import java.util.List;
import java.util.ArrayList;public class ListToArrayExample {public static void main(String[] args) {// 创建一个ListList<String> list = new ArrayList<>();list.add("A");list.add("B");list.add("C");// 将List转换为数组(指定类型)String[] array = list.toArray(new String[0]);// 输出结果for (String str : array) {System.out.println(str);}}
}

在这个例子中,list.toArray(new String[0]) 生成了一个类型为 String[]的数组。new String[0]表示传入的数组大小,实际上该数组的大小会根据 List 的元素数自动调整。

 (c) 对于更复杂的 List 类型

如果你的 List 中包含自定义类型(比如一个 `Person` 类),转换的方法和上述类似:

import java.util.List;
import java.util.ArrayList;class Person {String name;int age;Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return name + ", " + age;}
}public class ListToArrayExample {public static void main(String[] args) {List<Person> list = new ArrayList<>();list.add(new Person("Alice", 30));list.add(new Person("Bob", 25));// 将List转换为Person类型的数组Person[] array = list.toArray(new Person[0]);// 输出结果for (Person person : array) {System.out.println(person);}}
}

2. 数组 转 List

如果你有一个数组,想要将其转换为一个 `List`,你可以通过 `Arrays.asList()` 方法来实现。

 (a) 数组 转 List(基本数据类型)

对于一个简单的数组(如 `int[]` 或 `String[]`),你可以这样做:

import java.util.Arrays;
import java.util.List;public class ArrayToListExample {public static void main(String[] args) {// 创建一个数组String[] array = {"A", "B", "C"};// 将数组转换为ListList<String> list = Arrays.asList(array);// 输出结果for (String str : list) {System.out.println(str);}}
}

 (b) 数组 转 List(原始类型数组)

注意,`Arrays.asList()` 方法对于原始类型数组(如 `int[]`, `double[]` 等)并不会返回一个 `List<Integer>` 或 `List<Double>` 等类型的 `List`,而是会返回一个 `List<int[]>` 类型的 List。要避免这个问题,你需要将原始类型数组包装成相应的包装类数组,然后再使用 `Arrays.asList()`。

import java.util.Arrays;
import java.util.List;public class ArrayToListExample {public static void main(String[] args) {// 创建一个int数组int[] array = {1, 2, 3};// 将int数组包装为Integer数组Integer[] boxedArray = Arrays.stream(array).boxed().toArray(Integer[]::new);// 将Integer数组转换为ListList<Integer> list = Arrays.asList(boxedArray);// 输出结果for (Integer num : list) {System.out.println(num);}}
}

 (c) 数组 转 List(自定义对象数组)

如果你有一个自定义类型的数组,使用 `Arrays.asList()` 同样适用:

import java.util.Arrays;
import java.util.List;class Person {String name;int age;Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return name + ", " + age;}
}public class ArrayToListExample {public static void main(String[] args) {// 创建一个Person类型的数组Person[] array = {new Person("Alice", 30), new Person("Bob", 25)};// 将数组转换为ListList<Person> list = Arrays.asList(array);// 输出结果for (Person person : list) {System.out.println(person);}}
}

 3. 注意事项

 (a) `Arrays.asList()` 的限制

- 使用 `Arrays.asList()` 创建的 List 是一个 **固定大小 的 List,这意味着你不能向 List 中添加或删除元素。如果试图进行这样的操作,会抛出 `UnsupportedOperationException`。
  
  例如:  

 List<String> list = Arrays.asList("A", "B", "C");list.add("D");  // 运行时抛出 UnsupportedOperationException

  如果你需要一个可修改的 List,应该将其包装在一个新的 `ArrayList` 中:

 List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));list.add("D");  // 现在可以修改

(b) 通过 `toArray()` 方法进行类型转换

如果 List 的类型不是你想要的类型(例如 List 存储了类型为 `Object` 的元素),可以在进行转换时强制类型转换。例如:

Object[] objArray = list.toArray();
String[] strArray = (String[]) objArray;  // 强制转换为 String[]

(c) 对于原始类型数组

Java 没有直接将原始类型数组(如 `int[]`, `double[]`)转换为 List 的方法。你可以先将原始类型数组转换为包装类数组,然后再用 `Arrays.asList()` 方法转换成 List。例如:

int[] array = {1, 2, 3};
Integer[] boxedArray = Arrays.stream(array).boxed().toArray(Integer[]::new);
List<Integer> list = Arrays.asList(boxedArray);

 总结

- List 转 数组:使用 `toArray()` 方法。对于类型化的 List,推荐使用 `toArray(T[] a)` 方法,这样可以避免不必要的类型转换。
- 数组 转 List:使用 `Arrays.asList()` 方法,但要注意原始类型数组的特殊情况(它们会被转换为一个包含数组的 List),并且返回的 List 是固定大小的,不能进行添加或删除元素的操作。

希望这个详细的解答能帮助你在 Java 中灵活地进行 List 和数组之间的转换!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com