Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试在指定索引处添加到ArrayList时发生OutOfMemoryError_Java_Sorting_Arraylist - Fatal编程技术网

Java 尝试在指定索引处添加到ArrayList时发生OutOfMemoryError

Java 尝试在指定索引处添加到ArrayList时发生OutOfMemoryError,java,sorting,arraylist,Java,Sorting,Arraylist,我正在尝试使用字符串的ArrayList执行插入排序: private static ArrayList<String> sortList(ArrayList<String> list) { ArrayList<String> newList = new ArrayList<String>(); String curWord, curOrdered; int comparison;

我正在尝试使用字符串的ArrayList执行插入排序:

private static ArrayList<String> sortList(ArrayList<String> list) {

        ArrayList<String> newList = new ArrayList<String>();
        String curWord, curOrdered;
        int comparison;

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

            curWord = (String) list.get(i);

            if(newList.isEmpty())
                newList.add(curWord);
            else {

                for(int j=0; j < newList.size(); j++) {

                    curOrdered = (String) newList.get(j);
                    comparison = curWord.compareTo(curOrdered);

                    if(comparison < 0)
                        newList.add(j, curWord);    // problem is here, heap runs out
                    else
                        newList.add(curWord);

                }

            }

            System.out.println(i);

        }

        return newList;

    }
私有静态ArrayList排序列表(ArrayList列表){
ArrayList newList=新的ArrayList();
字符串curWord,curOrdered;
整数比较;
对于(int i=0;i
然而,当我尝试添加到排序的ArrayList时,我似乎用完了堆空间。我的外循环似乎只运行了一次,但我不知道到底出了什么问题


谢谢

每次进入
for
循环的内部
时,都会向
新列表添加一个新元素。由于循环条件指定在
j
时继续,因此
j
开始时小于大小,并且每次向两者添加一个,因此
j
永远不会达到
newList.size()
并且您一直添加元素,直到堆空间用完。

在我看来,您似乎一直在将条目从newList添加到newList。在这种情况下,您不太可能会用完要添加的条目。进行一些调试,您在其中有一个无限循环。您是否尝试使用调试器查看这一点,以了解您的代码此时正在做什么?是的,就是这样,不敢相信我之前没有看到它!谢谢