Java 如何将不同类型的ArrayList添加到数组中

Java 如何将不同类型的ArrayList添加到数组中,java,arrays,arraylist,Java,Arrays,Arraylist,我有4个字符串类型的ArrayList,称为A、B、C、D,我想将它们添加到一个数组中。这是我到目前为止尝试过的,但不起作用 String[] finalWords = new String[]{A,B,C,D}; 您可以将它们存储在ArrayList中 如果ArrayList是相同类型的字符串,则 List<List<String>> finalWords = new ArrayList(); finalWords.add(A); finalWo

我有4个字符串类型的ArrayList,称为A、B、C、D,我想将它们添加到一个数组中。这是我到目前为止尝试过的,但不起作用

String[] finalWords = new String[]{A,B,C,D};

您可以将它们存储在ArrayList中

如果ArrayList是相同类型的字符串,则

    List<List<String>> finalWords = new ArrayList();
   finalWords.add(A);
    finalWords.add(B);
    finalWords.add(C);
     finalWords.add(D);
List finalWords=new ArrayList();
最后添加(A);
最后添加(B);
最后添加(C);
最后添加(D);

如果它们的类型不同,请将上面的类型“String”替换为“Object”。但是请记住,您必须将它们转换为正确的类型。

您可以将列表添加到
列表
,然后使用
流#平面图
将列表展平为单个
列表
,您可以将其转换为数组,如下所示:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(final String[] args) {
        List<String> list1 = List.of("a1", "a2", "a3");
        List<String> list2 = List.of("b1", "b2", "b3");
        List<String> list3 = List.of("c1", "c2", "c3");
        List<String> list4 = List.of("d1", "d2", "d3");

        List<List<String>> listOfLists = List.of(list1, list2, list3, list4);

        String[] finalWords = listOfLists
                                .stream()
                                .flatMap(list -> list.stream())
                                .collect(Collectors.toList())
                                .toArray(String[]::new);
        
        System.out.println(Arrays.toString(finalWords));
    }
}
[更新]礼貌

导入java.util.array;
导入java.util.List;
导入java.util.stream.collector;
导入java.util.stream.stream;
公共班机{
公共静态void main(最终字符串[]args){
列表1=列表中的(“a1”、“a2”、“a3”);
列表2=列表中的(“b1”、“b2”、“b3”);
列表3=列表中的(“c1”、“c2”、“c3”);
List list4=列表中的(“d1”、“d2”、“d3”);
字符串[]finalWords=Stream.of(列表1、列表2、列表3、列表4)
.flatMap(列表->列表.stream())
.collect(收集器.toList())
.toArray(字符串[]::新建);
System.out.println(array.toString(finalWords));
}
}

我一有机会就开始使用
java.util.stream.stream
如果没有
List[]toArray(List…lists){…}
,我得到的每一个机会,关于参数化类型数组的答案都是不完整的

import java.util.*;
导入java.lang.*;
导入java.io.*;
导入静态java.util.List.of;
表意文字
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
列表A=属于(“A”、“ah”、“A”、“ay”);
列表B=属于(“B”、“B”、“bee”、“Bea”);
列表C=of(“sea”、“Cee”、“C++”、“C”、“Si”、“C#”);
列表D=共有(“D”、“D”、“迪”、“迪”、“迪、迪、雷蒙”、“阳光D”);
列表N1=of(777);
列表N2=of(-93.11D);
列表N3=of(867.5f);
列表N4=共(-309L);
列表[]litzs=toArray(A、B、C、D);
列表[]nzs=toArray(N1、N2、N3、N4);
/*…但是使用它们…*/
}
私有静态列表[]toArray(列表…列表){
退货清单;
}
}

这可能不是约书亚·布洛赫会赞同的。但这是一个非常简洁的小技巧,同样如此。

你也可以用这种方式尝试

List<String> finalList = new ArrayList<>();
Stream.of(A,B,C,D).forEach(finalList::addAll);
String[] finalWords = finalList.toArray(new String[0]);
List finalList=new ArrayList();
(A,B,C,D)的流。forEach(finalList::addAll);
字符串[]finalWords=finalList.toArray(新字符串[0]);

你想要一个包含
ArrayLists
的数组,还是想要一个包含所有四个
ArrayList
内容的长数组?你不能链接
List#add
方法的调用,因为它返回的是布尔值,而不是结果列表。正确的,我完全搞砸了,我将编辑答案,或者只是流。of(列表1,列表2,…)没有创建新的列表。@厄立特里亚-太棒了!让我把这句话和我的回答结合起来。谢谢,@Mandy8055的客气话。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static void main(final String[] args) {
        List<String> list1 = List.of("a1", "a2", "a3");
        List<String> list2 = List.of("b1", "b2", "b3");
        List<String> list3 = List.of("c1", "c2", "c3");
        List<String> list4 = List.of("d1", "d2", "d3");

        String[] finalWords = Stream.of(list1, list2, list3, list4)
                                .flatMap(list -> list.stream())
                                .collect(Collectors.toList())
                                .toArray(String[]::new);
        
        System.out.println(Arrays.toString(finalWords));
    }
}
import java.util.*;
import java.lang.*;
import java.io.*;
import static java.util.List.of;

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        List<String> A = of("a", "ah", "A", "ay");
        List<String> B = of("B", "b", "bee", "Bea");
        List<String> C = of("sea", "Cee", "C++", "c", "Si", "C#");
        List<String> D = of("D", "d", "dee", "Di", "Dee-Dee Ramone", "Sunny D");
        
        List<Number> N1 = of(777);
        List<Number> N2 = of(-93.11D);
        List<Number> N3 = of(867.5f);
        List<Number> N4 = of(-309L);
        
        List<String>[] litzs = toArray(A, B, C, D);
        
        List<Number>[] nzs = toArray(N1, N2, N3, N4);
        
        /*...use them however...*/  

    }
    
    private static <T> List<T>[] toArray(List<T> ... lists){ 
        return lists;
    }
}
List<String> finalList = new ArrayList<>();
Stream.of(A,B,C,D).forEach(finalList::addAll);
String[] finalWords = finalList.toArray(new String[0]);