Java ArrayList越界错误

Java ArrayList越界错误,java,sorting,arraylist,Java,Sorting,Arraylist,我正在为类构建一个程序,但在排序数组列表时遇到了问题。我需要根据代码的值对arraylist的元素进行排序 public static ArrayList<MenuItem> orderByCode( ArrayList<MenuItem> items ){ ArrayList<MenuItem> order=new ArrayList<MenuItem>(items.size()); for (int i = 0; i < item

我正在为类构建一个程序,但在排序数组列表时遇到了问题。我需要根据代码的值对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;
 }
公共静态ArrayList orderByCode(ArrayList项){
ArrayList顺序=新的ArrayList(items.size());
对于(int i=0;i如果(order.get(i).getCode()检查项目的大小,因为我正在查看项目数组列表,但用于访问订单,您可能需要将其更改为

for (int i=0;i<order.size();i++)

for(int i=0;i检查项目的大小,因为我正在查看项目数组列表,但用于访问订单,您可能希望将其更改为

for (int i=0;i<order.size();i++)

for(int i=0;i检查项目的大小,因为我正在查看项目数组列表,但用于访问订单,您可能希望将其更改为

for (int i=0;i<order.size();i++)

for(int i=0;i检查项目的大小,因为我正在查看项目数组列表,但用于访问订单,您可能希望将其更改为

for (int i=0;i<order.size();i++)

for(int i=0;i学习使用调试器。借助调试器,应该很容易发现此类问题,这样您就可以知道是哪一行导致了问题,以及此时变量的值是多少

无论如何,虽然我不知道你想做什么,但这条线显然有问题:

if ( order.get(i).getCode()<order.get(i-1).getCode()){

if(order.get(i).getCode()学习使用调试器。借助调试器,应该很容易发现此类问题,这样您就可以知道是哪一行导致了问题,以及此时变量的值是多少

无论如何,虽然我不知道你想做什么,但这条线显然有问题:

if ( order.get(i).getCode()<order.get(i-1).getCode()){

if(order.get(i).getCode()学习使用调试器。借助调试器,应该很容易发现此类问题,这样您就可以知道是哪一行导致了问题,以及此时变量的值是多少

无论如何,虽然我不知道你想做什么,但这条线显然有问题:

if ( order.get(i).getCode()<order.get(i-1).getCode()){

if(order.get(i).getCode()学习使用调试器。借助调试器,应该很容易发现此类问题,这样您就可以知道是哪一行导致了问题,以及此时变量的值是多少

无论如何,虽然我不知道你想做什么,但这条线显然有问题:

if ( order.get(i).getCode()<order.get(i-1).getCode()){

if(order.get(i).getCode()我猜这一行有错误

if ( order.get(i).getCode()<order.get(i-1).getCode()){

if(order.get(i).getCode()我猜这一行有错误

if ( order.get(i).getCode()<order.get(i-1).getCode()){

if(order.get(i).getCode()我猜这一行有错误

if ( order.get(i).getCode()<order.get(i-1).getCode()){

if(order.get(i).getCode()我猜这一行有错误

if ( order.get(i).getCode()<order.get(i-1).getCode()){

if(order.get(i).getCode()需要修复此行

if (order.get(i).getCode() < order.get(i - 1).getCode())
if(order.get(i).getCode()
这一行需要修复

if (order.get(i).getCode() < order.get(i - 1).getCode())
if(order.get(i).getCode()
这一行需要修复

if (order.get(i).getCode() < order.get(i - 1).getCode())
if(order.get(i).getCode()
这一行需要修复

if (order.get(i).getCode() < order.get(i - 1).getCode())
if(order.get(i).getCode()
在遍历ArrayList时,创建一个迭代器

Iterator<MenuItem> i = order.iterator();
while (i.hasNext())
{
   MenuItem current = i.next();
   // perform operations on current
}
Iterator i=order.Iterator();
while(i.hasNext())
{
MenuItem current=i.next();
//对当前数据执行操作
}
或者,将ArrayList转换为数组,并对其进行迭代

MenuItem[] orderArray = order.toArray(new MenuItem[order.size()]);
for (int i = 0; i < orderArray.length; i++)
{
   // perform operations on each order by using orderArray[i].relevantMethod()
}
MenuItem[]orderArray=order.toArray(新的MenuItem[order.size()]);
for(int i=0;i
这样清理代码可以让您更好地理解正在发生的事情


祝你好运!

在遍历ArrayList时,创建一个迭代器

Iterator<MenuItem> i = order.iterator();
while (i.hasNext())
{
   MenuItem current = i.next();
   // perform operations on current
}
Iterator i=order.Iterator();
while(i.hasNext())
{
MenuItem current=i.next();
//对当前数据执行操作
}
或者,将ArrayList转换为数组,并对其进行迭代

MenuItem[] orderArray = order.toArray(new MenuItem[order.size()]);
for (int i = 0; i < orderArray.length; i++)
{
   // perform operations on each order by using orderArray[i].relevantMethod()
}
MenuItem[]orderArray=order.toArray(新的MenuItem[order.size()]);
for(int i=0;i
这样清理代码可以让您更好地理解正在发生的事情


祝你好运!

在遍历ArrayList时,创建一个迭代器

Iterator<MenuItem> i = order.iterator();
while (i.hasNext())
{
   MenuItem current = i.next();
   // perform operations on current
}
Iterator i=order.Iterator();
while(i.hasNext())
{
MenuItem current=i.next();
//对当前数据执行操作
}
或者,将ArrayList转换为数组,并对其进行迭代

MenuItem[] orderArray = order.toArray(new MenuItem[order.size()]);
for (int i = 0; i < orderArray.length; i++)
{
   // perform operations on each order by using orderArray[i].relevantMethod()
}
MenuItem[]orderArray=order.toArray(新的MenuItem[order.size()]);
for(int i=0;i
这样清理代码可以让您更好地理解正在发生的事情


祝你好运!

在遍历ArrayList时,创建一个迭代器

Iterator<MenuItem> i = order.iterator();
while (i.hasNext())
{
   MenuItem current = i.next();
   // perform operations on current
}
Iterator i=order.Iterator();
while(i.hasNext())
{
MenuItem current=i.next();
//对当前数据执行操作
}
或者,将ArrayList转换为数组,并对其进行迭代

MenuItem[] orderArray = order.toArray(new MenuItem[order.size()]);
for (int i = 0; i < orderArray.length; i++)
{
   // perform operations on each order by using orderArray[i].relevantMethod()
}
MenuItem[]orderArray=order.toArray(新的MenuItem[order.size()]);
for(int i=0;i
这样清理代码可以让您更好地理解正在发生的事情


祝你好运!

这真是一团糟-你有两个嵌套的for循环,不清楚你想做什么。此外,变量
j
(内部循环)从未使用过。还有一件事:如果你想对集合排序,请实现
comparable
并使用
集合。sort()
数组。sort()
我们可以知道这种方法的目的是什么吗?在你的代码中,根本没有使用
j