0

我有一个字符串数组说

String [] my_array_list = { "SOMETHING1" , "SOMETHING2" , "ALCHOHAL", 
                        "SOMETHING3" , "ALL", "SOMETHING4" };

现在,当我对此进行排序时Arrays.sort( my_array_list );

然后我得到这样的输出:

ALCHOHAL
ALL
SOMETHING1
SOMETHING2 ... etc.

现在这是我的观点。
如果我需要"ALL"在字符串数组的索引 0 处,我们需要做什么。"ALL"即在我搬出之前总是需要在字符串数组的第一个位置。

排序方法有什么方法吗,或者我们需要为此做一些其他事情。

4

3 回答 3

4

一种优雅的方法是定义一个Comparator有利于您的"ALL"字符串的字符串:

Arrays.sort(my_array_list, new Comparator<String>() {

  private static final String FIRST = "ALL";

  @Override
  public int compare(String o1, String o2) {
    if (o1.equals(FIRST)) {
      return -1;
    } else if (o2.equals(FIRST)) {
      return 1;
    } else {
      return o1.compareTo(o2);
    }
  }
});

如果您有很多类似的排序要做,您可能希望将此匿名重构Comparator为顶级类。添加一个接受“魔术”字并确保它在排序中排在第一位的构造函数将是微不足道的。

于 2013-11-12T08:59:41.950 回答
3

在这里你可以做什么:

  1. all从阵列中删除。
  2. 解决。
  3. 转换为ArrayList.
  4. add all在索引 0。
  5. 其转换回数组。
于 2013-11-12T08:51:04.760 回答
1

最简单的解决方案是添加一个前缀,"ALL"使其在字典上始终位于开头。所有字符前面都有一个空格,因此您可以将其命名" ALL"或类似"_ALL". 如果那不会,您必须在排序或实现考虑特殊情况的自定义比较器时以某种方式将其从数组中删除。

于 2013-11-12T08:58:18.260 回答