无法插入数组列表中的最后位置

时间:2014-01-23 02:43:34

标签: java sorting arraylist insert

我正在尝试将单词插入按字母顺序排序的单词数组中。下面的代码将数组转换为arraylist并将单词插入正确的位置。但是,如果要插入的单词必须在最后,则不会插入。对于最后一个for循环,我尝试将条件设置为< = aList.size()但我得到一个ArrayList.rangeCheck和ArrayList.get异常。任何帮助将不胜感激。

import java.util.*;

public class insertSort {

public static void main(String args []) {

    String [] sortedArray = new String [] {"aa", "ball", "dog", "zebra", "zzz"};

    ArrayList <String> aList = new ArrayList <String> (); //create new arraylist

    for (int i=0; i < sortedArray.length; i++){
        String temp = sortedArray [i];
        aList.add(temp);
    }

    System.out.println(aList);                     

    String word = "zzzz";
    for (int i =0; i < aList.size();i++) {
        String temp = aList.get(i);
        int comparisonResult = word.compareTo(temp) ;
        if (comparisonResult < 0 | comparisonResult == 0) {
            aList.add(i , word);
            break;}

        }


    System.out.println(aList);

}
}

2 个答案:

答案 0 :(得分:2)

使用布尔值记录您是否成功地将单词插入任何其他单词之前,如果没有,则将其添加到数组的末尾:

boolean wasInserted = false;
for (int i =0; i < aList.size();i++) {
    String temp = aList.get(i);
    int comparisonResult = word.compareTo(temp) ;
    if (comparisonResult < 0 || comparisonResult == 0) {
        aList.add(i , word);
        wasInserted = true;
        break;
    }
}
if(!wasInserted) {
    aList.add(word);
}

答案 1 :(得分:1)

for循环只会将新单词添加到List中,如果单词在另一个单词之前按字母顺序排列,或者如果它等于列表中的另一个单词。在

的情况下
String word = "zzzz";

这确实在另一个或另一个词之前按字母顺序排列,因此不会添加。 您需要添加某种检查以查看是否添加了工作,如果没有,请调用

aList.add(word)

将新单词添加到列表的末尾。