如何将字符串数组放入字符串数组的数组中?

5

我有4个字符串数组,就像这样:

String[] array1  = new String{"there",  "there2", "there3", "there4"};
String[] array2  = new String{"here","here2","here3"};
String[] array3  = new String{"hi","hi2"};
String[] array4  = new String{"blah","blah2","blah3"};

我想把它们放入一个二维数组中,这个数组看起来像这样:

   Array myArray =  [{"there",  "there2", "there3", "there4"},
                     {"here","here2","here3"},{"hi","hi2"},
                     {"blah","blah2","blah3"}];

然后,您可以以类似以下方式访问其中的元素:
myArray[0][1] would equal "there2"
myArray[1][2] would equal "here3"

希望这有意义,我该怎么做呢?

我已经尝试过像这样创建一个ArrayList然后添加它们,但似乎不起作用。

ArrayList<String[]> myArrayList = new ArrayList<String[]>();
myArrayList.add(myArray);

这很奇怪...你已经知道如何访问你想要的数组,但你还没有尝试以那种方式定义它? - Tom
看起来你打错了。String[] array1 = new String{"there", "there2", "there3", "there4"}; 不会创建数组。要么删除 new String[] 只留下 String[] array1 = {your, elemements};,要么通过添加 [] 明确地添加数组类型,如 new String[]{"there", "there2", "there3", "there4"}; - Pshemo
7个回答

3
很简单。请查看此链接以获取有关创建、初始化和访问数组的更多信息。
String[] array1 = new String[]{"there", "there2", "there3", "there4"};
        String[] array2 = new String[]{"here", "here2", "here3"};
        String[] array3 = new String[]{"hi", "hi2"};
        String[] array4 = new String[]{"blah", "blah2", "blah3"};

        String[][] allArray = {
                array1,
                array2,
                array3,
                array4
        };

2
我已经修改了你的定义,以确保其可以编译通过:
String[] array1  = {"there",  "there", "there", "there"};
String[] array2  = {"here","here","here"};
String[] array3  = {"hi","hi"};
String[] array4  = {"blah","blah","blah"};

向列表添加的首选方法是内置的方法,因为对数组的更改将反映在列表中。

List<String[]> y = Arrays.asList(array1, array2, array3,array4);

一个小提示:如果你要定义一个变量,请优先使用接口。

List<String[]> x

代替
ArrayList<String[]> x

干得好,请从现在开始像这样发布你的未来答案,这样对其他可能看到你的答案的人会有帮助。 - Kick Buttowski

2

试试这个:

String[][] arraysTogether = new String[][]{
    array1,
    array2,
    array3,
    array4
};

2
您可以简单地执行以下操作:String[][] finalArray = new String[][] {array1, array2, array3, array4};
    String[] array1  = new String[]{"there",  "there2", "there3", "there4"};
    String[] array2  = new String[]{"here","here2","here3"};
    String[] array3  = new String[]{"hi","hi2"};
    String[] array4  = new String[]{"blah","blah2","blah3"};

    String[][] myArray= new String[][] {array1, array2, array3, array4};
    System.out.println(myArray[2][1]);

这将打印出"hi2"

如果您执行

        myArray[0][1] --> It would be "there2"
        myArray[1][2] --> It would be "here3"

2

String数组转换为String[][]

首先,String[] array1 = new String{"there", "there2", "there3", "there4"}不能编译。你可能想要这样写:

String[] array1 = new String[]{"there", "there2", "there3", "there4"};

你可以用更简短的方式完成它(我会推荐这样做):
String[] array1 = {"there", "there2", "there3", "there4"};

现在,你问题的答案是:
String[][] arrays = new String[][]{array1, array2, array3, array4};

或者,再次简短一些(并建议):
String[][] arrays = {array1, array2, array3, array4};

根据Java语言规范10.3数组创建,长语法是一个数组创建表达式,短语法则是一个数组初始化器。它们并不等价。(如果它们是等价的话,设计者可能会删掉其中的一个- 奥卡姆剃刀原则。)一个{{link5:例子},在这个例子中你可以使用数组创建表达式但不能使用数组初始化器
将字符串数组放入 ArrayList 中
最接近您尝试的方式:
List<String[]> myArrayList = new ArrayList<String[]>();
myArrayList.add(array1);
myArrayList.add(array2);
myArrayList.add(array3);
myArrayList.add(array4);

使用Arrays.asList()的最短方式如下:
List<String[]> myArrayList = Arrays.asList(array1, array2, array3, array4);

而且,如果你将array1array2array3array4声明为final引用,你可以使用双括号初始化
List<String[]> myArrayList = new ArrayList<String[]>() {{
    add(array1);
    add(array2);
    add(array3);
    add(array4);
}};

1
你可以按照以下步骤进行操作。
String[][] myArray =  new String[][]{{"there",  "there2", "there3", "there4"},  
                                     {"here","here2","here3"},{"hi","hi2"}, 
                                     {"blah","blah2","blah3"}};

"并且像你说的那样访问",保留HTML格式。
    public class Test
{
    public static void main(String[] args) {
        String[][] myArray =  new String[][]{{"there",  "there2", "there3", "there4"},
                {"here","here2","here3"},{"hi","hi2"},
                {"blah","blah2","blah3"}};
        System.out.println(myArray[0][1]); // there2
        System.out.println(myArray[1][2]); // here3
    }
}

请注意,这里有一个区别,与

不同。
String[][] myArray = new String[][] {
    array1,
    array2,
    array3,
    array4,
};

在第二种方法中,对例如array1的更改也会应用于myArray,因此它是静态和动态初始化的混合,选择适合您需求的方式。

0
将数组添加到列表中:
List<String[]> list = Arrays.asList(array1, array2, array3, array4);

将数组添加到二维数组中:

String[][] array = new String[][] {
    array1,
    array2,
    array3,
    array4,
};

此外,您没有正确初始化数组。您的方式是调用String对象的构造函数,而不是初始化数组,因此编译器会报错。
更改为:
String[] array1  = new String{"there",  "there2", "there3", "there4"};

要添加[]

String[] array1  = new String[]{"there",  "there2", "there3", "there4"};

或者直接声明数组:

String[] array1  = {"there",  "there2", "there3", "there4"};

其他数组同理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接