首页 > 解决方案 > 如何使用 compareTo 对 arrayList 进行排序

问题描述

当用户输入名称时,我希望使用 compareTo 方法立即对名称进行排序,并在用户输入名称时按字母顺序返回它们。

我尝试过使用 forLoop 方法,但不完全了解 compareTo 方法的实际工作原理,我到处寻找,但找不到确切的完成方法。

public class sortNames
{
public static void main(String[] args)
{
    Scanner UI = new Scanner(System.in);
    ArrayList<String> names = new ArrayList<String>();
    System.out.println("Enter words, stop with -1");
    while (true)
    {
        String input = UI.next();
        if(!input.equals("-1"))
        {
            names.add(input);
            System.out.println(names);
        }
        else
        {
            break;
        }
    }
 }
}

我希望输出看起来像这样(用户输入)“Bob”(应该返回)[Bob](用户输入)“Ally”(应该返回)[Ally,Bob] 等等其他名称。

标签: javasortingarraylistnamesalphabetical

解决方案


我认为在您的情况下,您应该选择TreeSet按排序顺序存储名称的数据结构。利用 :

TreeSet<String> names = new TreeSet<String>();

代替 :

ArrayList<String> names = new ArrayList<String>();

会解决你的问题。


推荐阅读