如何在java中将ArrayList的输入<String>添加到嵌套数组列表中



我有一个方法,它接受嵌套的字符串数组列表作为参数,如下所示:

public static String methodName(ArrayList<ArrayList<String>> param1,ArrayList<Integer> param2){
...some logic
}

我想用输入

测试这个方法
input :"param1"= [
["HTML", "C#"],
["C#", "Python"],
["Python", "HTML"]
]
"param2"= [0, 0, 1]

我在网上搜索,发现这:我如何声明一个二维字符串数组列表?

这是我尝试的:

public static void main(String[] args){
ArrayList<ArrayList<String>> param1 = ...what should I put here?    
List<List<String>> list = new ArrayList<List<String>>();
List<String> input = new ArrayList<String>();
input.add({"HTML", "C#"});//does not compile ... array initializer not allowed here
input.add({"C#", "Python"});
input.add({"Python", "HTML"});

如何将输入添加到嵌套的数组列表中?非常感谢您的帮助……

由于param1被声明为ArrayList<ArrayList<...>>,您别无选择,只能为嵌套元素显式地创建new ArrayList(...):

ArrayList<ArrayList<String>> param1 = new ArrayList<>(Arrays.asList(
new ArrayList<>(Arrays.asList("HTML", "C#")),
new ArrayList<>(Arrays.asList("C#", "Python"))
));

但是,作为一般规则,尝试编写接受尽可能宽松的参数类型的函数。在这种情况下,如果您可以将methodName中的ArrayList<ArrayList<String>>替换为List<List<String>>,那么对于您的函数的用户来说将会好得多。

例如,他们可以这样创建param1:

List<List<String>> param1 = Arrays.asList(
Arrays.asList("HTML", "C#"),
Arrays.asList("C#", "Python")
);

乌利希期刊指南正如@DavidConrad指出的,从Java 9开始,你可以使用List.of(...)来代替Arrays.asList(...)

你可以做

List<List<String>> list = new ArrayList<>(); // No need for List<String> again, just the one diamond operator is enough here.
list.add(List.of("HTML", "C#"));
...

相关内容

  • 没有找到相关文章

最新更新