如何使用compareTo对arrayList进行排序

时间:2019-01-27 16:51:33

标签: java sorting arraylist names alphabetical

当用户输入名称时,我希望使用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;
        }
    }
 }
}

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

2 个答案:

答案 0 :(得分:1)

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

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

代替:

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

将解决您的问题。

答案 1 :(得分:0)

只需使用ArrayList的方法sort即可:

names.sort(null);

null参数指示应使用自然排序(compareTo)。