我想使用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);
    }


祝好运

09-08 08:37