【发布时间】:2010-12-08 13:11:57
【问题描述】:
我有两个用户名。
我想比较它们并按字母顺序显示它们。
我尝试了 compareTo 方法,但它只返回一个 int。
编辑:找到答案!再次感谢大家!
【问题讨论】:
-
那是两个的名字吗?如果是,则根据比较结果,您可以按顺序显示它们。
-
你会怎么做?比数组更简单?
我有两个用户名。
我想比较它们并按字母顺序显示它们。
我尝试了 compareTo 方法,但它只返回一个 int。
编辑:找到答案!再次感谢大家!
【问题讨论】:
如果您只有两个名称,请使用 compareTo() 方法。 如果您有很多,请使用其他解决方案(将它们添加到列表并对其进行排序)。
总是喜欢“Arrays.asList(strArray);”到“new ArrayList()”,当不可能时,为了性能,在构造函数上指定列表大小。
【讨论】:
你说:“我必须命名”——假设你的意思是“我有两个名字”...
如果您有两个字符串,那么您只有两种可能的方式可以返回它们。可以是 A、B 或 B、A。这两个字符串的排序方式只有三种。
要么:
事实证明,根据the Java documentation,String.compareTo() 方法实际上为您提供了一个映射到这三种可能状态的值:
结果是一个负整数,如果 这个 String 对象按字典顺序 在参数字符串之前。这 结果是一个正整数,如果这 按字典顺序排列的字符串对象 跟随参数字符串。这 如果字符串是,则结果为 zero 平等的; compareTo 准确返回 0 当 equals(Object) 方法将 返回真。
【讨论】:
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
【讨论】:
您需要对它们进行排序(compareTo 方法为排序算法提供了它需要知道什么在什么之前发生的信息)。要对它们进行排序,您需要将它们放在 List 中,然后使用 Collections.sort() 方法。
【讨论】:
Java 中内置了一些排序方法。尝试将名称放入数组并使用Array sort。
【讨论】:
最简单的方法是将它们存储在诸如TreeSet 这样的数据结构中,该结构固有地对其内容进行排序(通常通过在内部调用compareTo)。
否则还有Collections.sort静态方法对现有List进行排序。
【讨论】: