如何使用 compareTo 对 arrayList 进行排序

How to sort an arrayList using compareTo

当用户输入姓名时,我希望使用 compareTo 方法立即对姓名进行分类,并 return 在用户输入姓名时按字母顺序排列。

我试过使用 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" (应该return)[鲍勃] (用户输入)"Ally" (应该 return) [Ally, Bob] 以此类推。

就用ArrayList的方法sort :

names.sort(null);

空参数表示应该使用自然顺序(compareTo)。

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

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

而不是:

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

将解决您的问题。