gpt4 book ai didi

java - ArrayList逆序排列

转载 作者:行者123 更新时间:2023-12-01 18:02:07 26 4
gpt4 key购买 nike

我需要从第一个元素参数的第一次出现开始,并以第二个参数的下一次出现结束,将它们按相反的顺序排列。

即:

ArrayList<String> food

番茄芝士片水果派黄油茶面包

两个参数是 chipsbuns

新的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/

26 4 0