我需要从第一个元素参数的第一次出现开始,到第二个参数的下一次出现结束,并将它们以相反的顺序放置。
即:
ArrayList<String> food
tomato cheese chips fruit pie butter tea buns
而两个参数是
chips
和buns
新的
ArrayList
应该是buns tea butter pie fruit chips
这就是我所拥有的,但是在打印时,arraylist为空
public static void main (String[] args){
ArrayList<String> food = new ArrayList<String>();
food.add(new String("tomato"));
food.add(new String("cheese"));
food.add(new String("chips"));
food.add(new String("fruit"));
food.add(new String("pie"));
food.add(new String("butter"));
food.add(new String("tea"));
food.add(new String("buns"));
ArrayList<String> f1 = reverseOrder(food,"chips","buns");
}
public static ArrayList<String> reverseOrder(ArrayList<String> a, String w1, String w2){
ArrayList<String> food = new ArrayList<String>();
int startingPos = 0;
int endingPos = 0;
boolean startAdding = false;
for(int i=0; i<a.size(); i++){
String n = a.get(i);
if(n.equals(w1)){
endingPos = i;
}
if(n.equals(w2)){
startingPos = i;
}
}
for(int j = startingPos; j<=endingPos; j--){
String p = a.get(j);
food.add(p);
}
System.out.print(food);
return food;
}
最佳答案
您要解决的问题实际上是两个。首先,您需要确定您关心的范围(指标)。然后执行相反的操作。
您有第一部分。第二部分可以通过重复删除和插入值来完成,但是我建议改用交换。
ArrayList l;
int begin, end;
//reverse everything from "begin" to "end".
while(begin<end){
Object tmp = l.get(begin);
l.set(begin, l.get(end));
l.set(end, tmp);
begin++;end--;
}
您还应该知道Java集合已经为您提供了一种简单的方法来反转列表。
Collections.reverse(list);
另外,如果您需要其他列表,而又不像以前那样修改原始列表,则可以抓取这样的子列表。
list.subList(fromIndex, toIndex)
这样,您可以结合以上内容轻松执行任务。
关于java - ArrayList以相反的顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40117746/