从String []的ArrayList打印一个字符串?

use*_*627 6 java arrays string arraylist dereference

我有一个完整的字符串数组的ArrayList,我这样构建:

String[] words = new String[tokens.length];
Run Code Online (Sandbox Code Playgroud)

我的ArrayList中有三个如上所示的数组:

surroundingWords.add(words);
surroundingWords.add(words1);
surroundingWords.add(words2);
Run Code Online (Sandbox Code Playgroud)

等等

现在,如果我想在aroundWords中打印出String数组中的元素......我不能.我可以最接近显示String []数组的内容是它们的地址:

[Ljava.lang.String;@1888759
[Ljava.lang.String;@6e1408
[Ljava.lang.String;@e53108
Run Code Online (Sandbox Code Playgroud)

我尝试了很多不同版本的东西似乎是一样的,最后一次尝试是:

for (int i = 0; i < surroudingWords.size(); i++) {
        String[] strings = surroundingWords.get(i);
        for (int j = 0; j < strings.length; j++) {
            System.out.print(strings[j] + " ");
        }
        System.out.println();
    }
Run Code Online (Sandbox Code Playgroud)

由于类型不兼容,我无法理解:

found   : java.lang.Object
required: java.lang.String[]
                String[] strings = surroundingWords.get(i);
                                                       ^
Run Code Online (Sandbox Code Playgroud)

救命!

我已经尝试过这里的解决方案:打印和访问列表

小智 11

尝试这样的事情

public class Snippet {
    public static void main(String[] args) {
        List<String[]> lst = new ArrayList<String[]>();

        lst.add(new String[] {"a", "b", "c"});
        lst.add(new String[] {"1", "2", "3"});
        lst.add(new String[] {"#", "@", "!"});

        for (String[] arr : lst) {
            System.out.println(Arrays.toString(arr));
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

  • +1,这是最简单的"Java方式".提出问题的人应该尝试学习像Object.toString()和Arrays/Collections助手类这样的java基础知识的行为. (2认同)

Poi*_*ter 4

将 投射ObjectString[]

String[] strings = (String[]) surroundingWords.get(i);

或使用参数化的ArrayList:

ArrayList<String[]> surroundingWords = new ArrayList<String[]>();

那么你就不必从 中转换返回值get()