【问题标题】:Trouble inserting into last position in array list无法插入数组列表中的最后一个位置
【发布时间】:2014-01-23 02:43:34
【问题描述】:

我正在尝试将一个单词插入按字母顺序排序的单词数组中。下面的代码将数组转换为数组列表并将单词插入到正确的位置。但是,如果要插入的单词必须放在最后,它就不会被插入。对于最后一个 for 循环,我尝试将条件设置为

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

}
}

【问题讨论】:

    标签: java sorting arraylist insert


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      的情况下
      String word = "zzzz";
      

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

      aList.add(word)
      

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

      【讨论】:

        猜你喜欢
        • 2021-06-06
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-05
        相关资源
        最近更新 更多