我有两个来自用户的名字。
我想比较它们并按字母顺序显示它们。
我尝试了compareTo方法,但只返回一个int。
编辑:找到答案!再次感谢你们!答案 0 :(得分:4)
你说:“我必须说出名字” - 假设你的意思是“我有两个名字”......
如果你有两个字符串,那么你只有两种方法可以返回它们。它是A,B或B,A。只有三种可能的方式可以订购两个字符串。
或者:
事实证明,根据the Java documentation,String.compareTo()
方法实际上为您提供了一个映射到这三种可能状态的值:
结果是负整数,如果 这个String对象按字典顺序排列 在参数字符串之前。该 如果是这样,结果是正整数 字符串对象按字典顺序排列 跟随参数字符串。该 如果字符串是,则结果为零 等于; compareTo完全返回0 当equals(Object)方法会 返回true。
答案 1 :(得分:0)
最简单的方法是将它们存储在TreeSet
这样的数据结构中,这些数据结构内在地对其内容进行排序(通常通过内部调用compareTo
)。
否则,还有Collections.sort
静态方法对现有List
进行排序。
答案 2 :(得分:0)
Java中内置了排序方法。尝试将名称放入数组并使用Array sort。
答案 3 :(得分:0)
您需要对它们进行排序(compareTo方法为排序算法提供了解前所需信息所需的信息)。要对它们进行排序,需要将它们放在List中,然后使用Collections.sort()方法。
答案 4 :(得分:0)
Here's an example对你来说,假设你有两个以上的名字,虽然它也适用于此:
// Create a list
String[] strArray = new String[] {"z", "a", "C"};
List list = Arrays.asList(strArray);
// Sort
Collections.sort(list);
// C, a, z
// Case-insensitive sort
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
// a, C, z
// Reverse-order sort
Collections.sort(list, Collections.reverseOrder());
// z, a, C
// Case-insensitive reverse-order sort
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
Collections.reverse(list);
// z, C, a
答案 5 :(得分:0)
如果您只有两个名称,请使用compareTo()方法。 如果你有很多,请使用其他解决方案(将它们添加到List并对其进行排序)。
总是更喜欢“Arrays.asList(strArray);”到“new ArrayList()”,当不可能时,为了提高性能,请在构造函数上指定列表大小。