我想使用Collections.swap
上下移动自定义数组项,但是我不明白如何以某种方式实现它,以使我的应用程序不会崩溃。
private List<Drinks> myDrinks = new ArrayList<Drinks>();
private ArrayList<String> yourItems;
...
private void populateDrinkList() {
if (yourItems.contains("pie")){
myDrinks.add(new Drinks("a"));
myDrinks.add(new Drinks("b"));
myDrinks.add(new Drinks("c"));
myDrinks.add(new Drinks("d"));
myDrinks.add(new Drinks("e"));
if (yourItems.contains("chocolate")){
String toMoveUp = "e";
while (myDrinks.indexOf(toMoveUp) != 0) {
int i = myDrinks.indexOf(toMoveUp);
Collections.swap(myDrinks, i, i - 1);
}
}
最佳答案
首先修复yourItems
变量ArrayList
,应采用以下方式声明:
private ArrayList<String> yourItems=new ArrayList<String>();
第二点
myDrinks
是将ArrayList
对象作为参数的Drinks
集合,这意味着您不能使用String toMoveup在其内部进行查看,而应该是Drinks
对象:Drinks toMoveUp=new Drinks("e");
然后:
while (myDrinks.indexOf(toMoveUp) != 0) {
int i = myDrinks.indexOf(toMoveUp);
Collections.swap(myDrinks, i, i - 1);
}
祝好运