您的位置:

Java对象转数组的方法

一、使用List.toArray()方法

List是Java中常用的容器类型之一,通过toArray()方法可以将List转换为数组。

List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");

String[] arr = list.toArray(new String[list.size()]);

在上面的示例中,我们首先创建了一个List,并向其中添加了三个元素。然后,我们调用toArray()方法将List转换为数组。需要注意的是,在toArray()方法中,我们需要传入一个同样类型的数组作为参数,这个数组的长度可以小于或等于List的长度。如果小于List的长度,那么List中多余的元素将被丢弃;如果等于List的长度,那么正常转换。

二、使用Arrays.asList()方法

在Java中,我们可以使用Arrays.asList()方法将数组转换为List,也可以使用Collections.addAll()方法将数组中的元素添加到List中,然后再将List转换为数组。

String[] arr = {"Java", "Python", "C++"};
List<String> list = new ArrayList<>(Arrays.asList(arr));

String[] arr2 = new String[arr.length];
Collections.addAll(list, arr2);
arr2 = list.toArray(arr2);

在上面的示例中,我们首先定义了一个包含三个元素的数组。然后,我们使用Arrays.asList()方法将数组转换为List,并将其赋值给list变量。接着,我们再创建一个长度等于数组长度的空数组,并利用Collections.addAll()方法将List中的元素添加到数组中。最后,我们在将List转换为数组。需要注意的是,这里我们需要传入一个同样类型的空数组,用于存放转换后的结果。

三、使用StreamAPI

在JDK8以后,Java提供了StreamAPI,可以很方便地对集合进行操作,并进行数组的转换。

String[] arr = {"Java", "Python", "C++"};

String[] result = Arrays.stream(arr)
                        .filter(s -> s.startsWith("J"))
                        .toArray(String[]::new);

在上面的示例中,我们首先定义了一个包含三个元素的数组。然后,我们使用Arrays.stream()方法将其转换为Stream,并使用filter()方法过滤出以J开头的元素。最后,我们使用toArray()方法将Stream转换为数组。需要注意的是,我们需要传入一个构造器引用,用于创建新的数组。

四、使用Apache Commons Lang库

除了Java自带的方法之外,我们还可以使用第三方库Apache Commons Lang提供的ArrayUtils类来实现数组与集合之间的转换。

String[] arr = {"Java", "Python", "C++"};

List<String> list = Arrays.asList(arr);
String[] arr2 = ArrayUtils.toArray(list);

在上面的示例中,我们首先定义了一个包含三个元素的数组。然后,我们使用Arrays.asList()方法将其转换为List,并将其赋值给list变量。接着,我们使用ArrayUtils.toArray()方法将List转换为数组。需要注意的是,这里我们需要传入一个同样类型的数组,用于存放转换后的结果。