我有一個方法,它接受字串的嵌套 ArrayList 作為引數,如下所示:
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"});
您將如何將輸入添加到嵌套的 ArrayList 中?將不勝感激任何幫助...
uj5u.com熱心網友回復:
由于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"))
));
但是,作為一般規則,盡量撰寫接受盡可能寬松的引數型別的函式。在這種情況下,如果您可以將ArrayList<ArrayList<String>>in替換methodName為List<List<String>>,那對于您的函式的用戶來說會好得多。
例如,他們可以這樣創建param1:
List<List<String>> param1 = Arrays.asList(
Arrays.asList("HTML", "C#"),
Arrays.asList("C#", "Python")
);
uj5u.com熱心網友回復:
你可以做
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#"));
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/341678.html
