簡體   English   中英

如何將 Arraylist 拆分為多個 Arraylist?

[英]How do I split Arraylist into several Arraylists?

我正在嘗試使用以下規則將 Arraylist 拆分為多個 Arraylist:

  • 當 arraylist 中索引i的值大於索引i+1的值時,將 arraylist 拆分為幾個子數組列表。

例如,如果有一個 arraylist {6,7,8,3,9,10,1,4} ,它應該存儲為{ {6,7,8}, {3,9,10}, {1,4} } .

我該怎么做?

通過循環原始 arraylist 並使用子列表方法,下面的代碼應該可以解決您的問題。

    ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();
    ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(6,7,8,3,9,10,1,4));

    int indexToSplitFrom = 0;
    for(int i = 0; i < numbers.size() - 1; i++){
        System.out.println(numbers.get(i));
        if(numbers.get(i) > numbers.get(i+1)){
            lists.add(new ArrayList<>(numbers.subList(indexToSplitFrom, i + 1)));
            indexToSplitFrom = i + 1;
        }
    }
    lists.add(new ArrayList<>(numbers.subList(indexToSplitFrom,  + numbers.size())));

這段代碼應該適合你

        List<Integer> mainList = new ArrayList<>();
        List<List<Integer>> listOfLists = new ArrayList<>();
        int listIndex = 0;
        for (int i = 0; i < mainList.size(); i++) {
            if (i == 0) {
                listOfLists.add(new ArrayList<>());
            } else if (mainList.get(i) < mainList.get(i - 1)) {
                listOfLists.add(new ArrayList<>());
                listIndex++;
            }
            listOfLists.get(listIndex).add(mainList.get(i));
        }
public static void splitList(ArrayList<Integer> input) {
        ArrayList<ArrayList<Integer>> output = new ArrayList<ArrayList<Integer>>();
        System.out.println("Input : "+input);
        for (int count = 0; count < input.size(); count++) {

            ArrayList<Integer> subList = new ArrayList<Integer>();
            for (int index = count; index < input.size(); index++) {
                if((index == input.size() - 1) || (input.get(index) > input.get(index + 1))){
                    subList.add(input.get(index));
                    count = index;
                    break;
                }else {
                    subList.add(input.get(index));
                }
            }
            output.add(subList);
        }
        System.out.println("Output : "+output);
    }

暫無
暫無

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

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