麻烦插入阵列列表中的最后一个位置



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

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);
}
}

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

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);
}

如果该单词在另一个单词之前按字母顺序出现,或者是否等于列表中的另一个单词,则FO for循环只会将新单词添加到列表中。如果是

String word = "zzzz";

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

aList.add(word)

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

相关内容

最新更新