Я создаю программу для класса, и у меня возникла проблема с сортировкой списка массивов. Мне нужно, чтобы элементы arraylist сортировались по значению кода.Ошибка ArrayList за пределами
public static ArrayList<MenuItem> orderByCode(ArrayList<MenuItem> items){
ArrayList<MenuItem> order=new ArrayList<MenuItem>(items.size());
for (int i = 0; i < items.size(); i++) {
for (int j = 1; j < (items.size() - i); j++) {
if (order.get(i).getCode()<order.get(i-1).getCode()){
order.add(items.get(j-1));
order.set(j-1, order.get(j));
order.set(j, order.get(order.size()-1));
}
}
}
return order;
}
Это часть кода, имеющего проблему = n. Если мне нужно добавить остальную часть класса или то, что я использую, чтобы проверить это, я могу это сделать.
public static void main(String[] args){
ArrayList<MenuItem> items = new ArrayList<MenuItem>();
items.add(new MenuItem("Big Bad Burger", 9.95, 2.15, 1, true));
items.add(new MenuItem("Cheeky Chicken", 5.95, 0.75, 1, true));
items.add(new MenuItem("Wild Wings", 5.95, 0.50, 0, true));
items.add(new MenuItem("Flying Fish", 15.95, 7.61, 1, false));
items.add(new MenuItem("Igloo Icecream", 1.95, 0.28, 2, true));
ArrayList<MenuItem> ordered = orderByCode(items);
// should list items in this order:
// Wings, Burger, Chicken, Fish, Icecream
for (MenuItem item : ordered)
System.out.println(item.menuString());
}
Есть код проверки.
Это беспорядок - у вас есть два вложенных цикла, и неясно, что вы пытаетесь сделать. Кроме того, переменная 'j' (внутренний цикл) никогда не используется. Еще одна вещь: если вы хотите сортировать коллекцию, реализуйте 'сопоставимые' и используйте' Collections.sort() 'или' Arrays.sort() ' – alfasin
Можем ли мы знать, какова цель этого метода? –
В вашем коде 'j' не используется вообще. –