java - ArrayList越界错误

标签 java sorting 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;
 }

这是代码中存在 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/

相关文章:

java - 如何使用输入来创建对象

java - 如何即时修改 java 属性?

java - 寻找删除两侧空格的方法,将所有字母更改为小写,首字母为大写字母

javascript - 不一致的 Javascript 排序

python - Pandas 多索引数据框获得每个排序组的前 5 行

java - 无法在类对象的 ArrayList 中存储值。 (代码已编辑)

java - ArrayList.add(int index, E element) 线程不安全吗?

java - 在屏幕的下半部分显示图像和用户信息

java - 无法获取公共(public)无参数构造函数

mysql - 在mysql中选择父记录之后具有子值的记录