如何使用 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>();
将解决您的问题。
当用户输入姓名时,我希望使用 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>();
将解决您的问题。