很直:
我试图使用compareto找到一个连续的字符串序列,并将它们保存到两个不同的arrayList中。
只有当下一个字符串在词典中等于或大于上一个字符串时,每个arraylist才应继续添加字符串。i、 e:如果arraylist包含[aaaaaaa,bbbbb,ccccc,aaaaaaa,bbbbb,aaaa,fffff],我希望它们将它们分成两个arraylist,如下所示:
arraylist 1包含连续升序字符串的第一个序列:[aaaaa,bbbbb,cccccc]。然后,arraylist 2应该包含紧跟其后的连续升序字符串:[aaaaa,bbbbb],然后再次切换到arraylist 1并附加下一个序列,因此现在arraylist 1应该是:[aaaaa,bbbbb,ccccc]+[aaaa,fffff],依此类推。我试过这个:
static ArrayList<String> separateArray(ArrayList<String> list){
ArrayList<String> F1 = new ArrayList<String>();
ArrayList<String> F2 = new ArrayList<String>();
for(int i=0; i<list.size()-1;i++){
if((list.get(i).compareTo(list.get(i+1))<=0))
F1.add(list.get(i));
F1.add(list.get(i+1));
for(int j=i;j<list.size()-1;j++){
if((list.get(j).compareTo(list.get(j+1))<=0))
F2.add(list.get(j));
}
}
}
我试过很多其他的方法和方法来完成这个,但我就是想不出来。如何实现像“开关”一样从添加到f1到f2,然后再添加到f1等等?
2条答案
按热度按时间aamkag611#
我认为你应该使用递归
w9apscun2#
不知何故,你必须知道什么是当前的目标列表,f1或f2。可以是
另一个变量
ArrayList<String> current
在你写的地方,你交替指定f1或f2。布尔标志
writingToF1
,每次你写一个列表,你检查它,if(writingToF1) {F1.add} else {F2.add}
,在切换顺序时必须相应地进行设置通过递归,使用方法参数切换列表。
这样地。这个
break
不过,看起来很难看。