Java 如何将Arraylist拆分为几个Arraylist?
我正在尝试使用以下规则将Arraylist拆分为多个Arraylist:Java 如何将Arraylist拆分为几个Arraylist?,java,arraylist,Java,Arraylist,我正在尝试使用以下规则将Arraylist拆分为多个Arraylist: 当arraylist中的indexi的值大于indexi+1的值时,将arraylist拆分为几个子arraylist 例如,如果存在一个arraylist{6,7,8,3,9,10,1,4}, 它应该存储为{{6,7,8}、{3,9,10}、{1,4} 如何执行此操作?通过循环原始arraylist并使用sublist方法,下面的代码应该可以解决您的问题 ArrayList<ArrayList<I
- 当arraylist中的index
的值大于indexi
i+1的值时,将arraylist拆分为几个子arraylist
{6,7,8,3,9,10,1,4}
,
它应该存储为{{6,7,8}、{3,9,10}、{1,4}
如何执行此操作?通过循环原始arraylist并使用sublist方法,下面的代码应该可以解决您的问题
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())));
ArrayList list=new ArrayList();
ArrayList编号=新的ArrayList(Arrays.asList(6,7,8,3,9,10,1,4));
int indexToSplitFrom=0;
对于(int i=0;inumbers.get(i+1)){
添加(新的ArrayList(numbers.subList(indextoplitfrom,i+1));
indexToSplitFrom=i+1;
}
}
添加(新的ArrayList(numbers.subList(indextoplitfrom,+numbers.size()));
通过循环原始arraylist并使用sublist方法,下面的代码应该可以解决您的问题
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())));
ArrayList list=new ArrayList();
ArrayList编号=新的ArrayList(Arrays.asList(6,7,8,3,9,10,1,4));
int indexToSplitFrom=0;
对于(int i=0;inumbers.get(i+1)){
添加(新的ArrayList(numbers.subList(indextoplitfrom,i+1));
indexToSplitFrom=i+1;
}
}
添加(新的ArrayList(numbers.subList(indextoplitfrom,+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));
}
List mainList=new ArrayList();
List listOfLists=新建ArrayList();
int listIndex=0;
对于(int i=0;i
此代码应该适合您
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));
}
List mainList=new ArrayList();
List listOfLists=新建ArrayList();
int listIndex=0;
对于(int i=0;i
公共静态无效拆分列表(ArrayList输入){
ArrayList输出=新的ArrayList();
System.out.println(“输入:”+输入);
对于(int count=0;countinput.get(index+1))){
subList.add(input.get(index));
计数=指数;
打破
}否则{
subList.add(input.get(index));
}
}
output.add(子列表);
}
System.out.println(“输出:”+输出);
}
公共静态无效拆分列表(ArrayList输入){
ArrayList输出=新的ArrayList();
System.out.println(“输入:”+输入);
对于(int count=0;countinput.get(index+1))){
subList.add(input.get(index));
计数=指数;
打破
}否则{
subList.add(input.get(index));
}
}
output.add(子列表);
}
System.out.println(“输出:”+输出);
}
根据定义,任何索引i
都小于i+1
(事实上,它少了一个),因此您的描述必须更加精确。您是指索引i
和i+1
处的元素吗?此外,“它应该存储在另一个arraylist中”建议在“6,7,8,3,9”中,只有8应该放在自己的列表中,因此:您需要编辑您的问题以使其更加精确。最简单和最快的方法之一是:据我所知,每个子列表必须只包含降序数字。从示例输入中,您应该只有两个子列表,如下所示:{8,3}
和{10,1}
。根据定义,任何索引i
都小于i+1
(事实上,它少了一个子列表),因此您的描述必须更加精确。您是指索引i
和i+1
处的元素吗?此外,“它应该存储在另一个arraylist中”建议在“6,7,8,3,9”中,只有8应该放在自己的列表中,因此:您需要编辑您的问题以使其更加精确。最简单和最快的方法之一是:据我所知,每个子列表必须只包含降序数字。从示例输入中,您应该只有两个子列表,如下所示:{8,3}
和{10,1}
。在循环的第一次中,listOfLists.get(listIndex)
引发异常。这是因为没有实例化子列表。我第一次在循环中编辑代码,listOfLists.get(listIndex)
抛出异常。这是因为没有实例化子列表。我编辑了代码