我正在为类构建一个程序,但在对数组列表进行排序时遇到问题。我需要按代码值对数组列表的元素进行排序。
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;
}
这是代码中存在 as=n 问题的部分。如果您需要我添加类(class)的其余部分或我用来测试它的内容,我可以这样做。
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() );
}
有测试代码。
最佳答案
我猜你在这行代码中遇到了错误,
if ( order.get(i).getCode()<order.get(i-1).getCode()){
上面的行将抛出 ArrayList 超出范围错误 i=0;
关于java - ArrayList越界错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21324417/