簡體   English   中英

從一個列表中填充多個列表

[英]Populate multiple lists from one list

我如何從一個列表中填充三個arrayLists,即從index1到lista1的值,從index2到lista2的值,從index3到lista3的值,從index4到lista1的值等等?

ArrayList<String> lista = new ArrayList<String>();

        ArrayList<String> lista1 = new ArrayList<String>();
        ArrayList<String> lista2 = new ArrayList<String>();
        ArrayList<String> lista3 = new ArrayList<String>();

        sh.forEach(row -> {
                row.forEach(cell -> {
                String cellvalue = dataFormatter.formatCellValue(cell);
                lista.add(cellvalue);
            });
        });
ArrayList<String> lista = new ArrayList<String>();

ArrayList<String> lista1 = new ArrayList<String>();
ArrayList<String> lista2 = new ArrayList<String>();
ArrayList<String> lista3 = new ArrayList<String>();

ArrayList<String>[] newLists = new ArrayList[]{lista1, lista2, lista3};
for (int i=0 ; i< lista.size(); i ++ ){
  newLists[i % 3].add(lista.get(i)); 
}

您可以將三個列表添加到三元素數組中,並使用傳統的for循環對其進行迭代。 這是修改后的代碼

    ArrayList<String> lista = new ArrayList<String>();
    ArrayList<String>[] lists = new ArrayList[3];

    lists[0] = new ArrayList<String>();
    lists[1] = new ArrayList<String>();
    lists[2] = new ArrayList<String>();


    for(int i = 0; i < lista.size(); i++){
        lists[i % lists.length].add(lista.get(i));
    }

Java8 +流API,可以嘗試一下

    List<String> lista = Arrays.asList("A","B","C","D","E");

    List<String> list1 = lista.stream()
            .filter(x -> lista.indexOf(x) % 3 == 0)
            .collect(Collectors.toList());

    List<String> list2 = lista.stream()
            .filter(x -> lista.indexOf(x) % 3 == 1)
            .collect(Collectors.toList());

    List<String> list3 = lista.stream()
            .filter(x -> lista.indexOf(x) % 3 == 2)
            .collect(Collectors.toList());

暫無
暫無

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

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