【问题标题】:How to sort ArrayList alphabetically in Java without using collections? [duplicate]如何在不使用集合的情况下在 Java 中按字母顺序对 ArrayList 进行排序? [复制]
【发布时间】:2015-04-29 14:28:49
【问题描述】:

我有以下代码,它获取名称并将它们存储在 ArrayList 中。

class Main{
  public static void main(String[] args) {
    ArrayList<String> names = new ArrayList<String>();
    Scanner scan = new Scanner(System.in);
    String name;
    do{
      System.out.println("Enter the next name: ");
      name = scan.nextLine();
      String toUpperCase = titleCase(name);
      if(!toUpperCase.equals("Stop")){
        names.add(toUpperCase);
      }
    } while(!name.equalsIgnoreCase("STOP"));

    System.out.println(names);


  }
  public static String titleCase(String s){
    String output = s.substring(0, 1).toUpperCase() +     s.substring(1).toLowerCase();
    return output;
  }

}

我需要在不使用集合的情况下按名称的字母顺序对 ArrayList 进行排序。

【问题讨论】:

  • 写一个方法sortList(List l),实现一个排序算法。如果这不是预期的答案:让我们知道您的问题出在哪里。
  • 不,你需要做的是:不要让其他人来解决你的作业并为你做学习工作。

标签: java sorting arraylist


【解决方案1】:

String 类实现Comparable&lt;String&gt;。因此,您可以使用其compareTo 方法来检查任何两个字符串是否按顺序排列。冒泡排序是目前效率最低但可能最简单的排序算法之一。

所以在伪代码中,这看起来像:

for int i from 0 to size of list minus two:
    if ("String at index i".compareTo("String at index i plus one") > 0)
        then swap the two strings in the list

【讨论】:

    【解决方案2】:

    在 Java 8 中你可以这样做

    list.sort(String::compareTo);
    

    我认为这是家庭作业,您必须自己实现排序算法。您使用哪种类型取决于设置任务的人的期望。

    顺便说一句,您可以使用 bogo 排序

    while(!isSorted(list)) {
        Collection.shuffle(list);
    }
    

    【讨论】:

    • @downvoter,有什么原因吗?
    • 我不是反对者,但你不能只调用list.sort(),因为该方法需要Comparator。
    猜你喜欢
    • 2019-08-02
    • 2016-04-28
    • 1970-01-01
    • 2016-03-11
    • 2021-09-25
    • 2011-03-30
    • 2017-05-22
    • 2020-10-10
    • 2019-02-03
    相关资源
    最近更新 更多