如何按字母顺序返回名称?

时间:2009-10-20 23:41:34

标签: java return

我有两个来自用户的名字。

我想比较它们并按字母顺序显示它们。

我尝试了compareTo方法,但只返回一个int。

编辑:找到答案!再次感谢你们!

6 个答案:

答案 0 :(得分:4)

你说:“我必须说出名字” - 假设你的意思是“我有两个名字”......

如果你有两个字符串,那么你只有两种方法可以返回它们。它是A,B或B,A。只有三种可能的方式可以订购两个字符串。

或者:

  • 第一个字符串在第二个字符串之前(按原样返回)
  • 第二个字符串位于第一个字符串之前(交换它们,然后返回)
  • 两个字符串相等(以任何顺序返回它们都没关系)

事实证明,根据the Java documentationString.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()”,当不可能时,为了提高性能,请在构造函数上指定列表大小。