簡體   English   中英

Java中的String列表列表

[英]List of String lists in Java

我有一個初始化為 object1 的字符串列表列表,如下所述:

List<List<String>> object1 = Arrays.asList(Arrays.asList("A", "B", "C"),
                                           Arrays.asList("D", "E", "F"), 
                                           Arrays.asList("G", "H", "I"));

現在我想創建一個新的字符串列表列表 object 讓 object 2 如下所述:

List<List<String>> object2 = new ArrayList<>();

在創建與“object1”相同的新 object“object2”時,我不確定上述編寫的語法是否正確。

我想使用兩個 for 循環(外循環和內循環)迭代 object1 中存在的每個元素並存儲在 object2 中。

我試圖參考很多例子,但無法得到正確的實現。

迭代object1的每個元素並添加到object2的語法是正確的,只需這樣做

        List<List<String>> object1 = Arrays.asList(Arrays.asList("A", "B", "C"),
                Arrays.asList("D", "E", "F"),
                Arrays.asList("G", "H", "I"));
        List<List<String>> object2 = new ArrayList<>();

        for(List<String> list : object1){
            List<String> copyList  =  new ArrayList<>(); 
            for(String value : list){
                copyList.add(value);
            }
            object2.add(copyList);
        }

雖然您可能需要更新您面臨問題的地方,但與此同時,這是我可行的嘗試:

        List<List<String>> object1 = Arrays.asList(Arrays.asList("A", "B", "C"), Arrays.asList("D", "E", "F"),
                Arrays.asList("G", "H", "I"));

        List<List<String>> object2 = new ArrayList<>();

        for (int i = 0; i < object1.size(); i++) {
            List<String> ls = new ArrayList<String>();
            for (int j = 0; j < object1.get(i).size(); j++) {
                ls.add(object1.get(i).get(j));
            }
            object2.add(ls);
        }
    System.out.println(object2);

Output:

[[A, B, C], [D, E, F], [G, H, I]]

如果您真的不需要顯式使用嵌套循環,則可以使用

  • 每個列表提供的復制構造函數,
  • 流並使用toList()收集其元素以分離列表。

所以你的代碼看起來像:

List<List<String>> object2 = new ArrayList<>();
for (List<String> row : object1){
    object2.add(new ArrayList<>(row)); //adds separate list containing copy of *row* elements
}

或使用流:

List<List<String>> object2 = object1.stream()
                                    .map(row -> row.stream().toList())//maps to copy of row
                                    .toList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM