[英]How do I split Arraylist into several Arraylists?
我正在嘗試使用以下規則將 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.