java - 对数组进行排序以获取索引 0 处的指定元素

标签 java collections

我有一个字符串数组

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

现在,当我对此应用排序时,请说 Arrays.sort( my_array_list );

然后我得到这样的输出:

ALCHOHAL
ALL
SOMETHING1
SOMETHING2 ... etc.

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

是否有任何排序方法,或者我们需要为此做一些其他事情。

最佳答案

一种优雅的方法是定义一个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 重构为顶级类。添加一个接受“magic”单词并确保它在排序中排在第一位的构造函数将是微不足道的。

关于java - 对数组进行排序以获取索引 0 处的指定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19924616/

相关文章:

c++ - 如何在 C++ 中简洁地初始化安全集合?

java - 是否可以为多个列创建一个索引? hibernate

java - 如何使用 Mockito 测试 api?我们需要模拟所有的类变量吗?

java - Android 内存 - 声明全局变量

java - 以我们转换原始数据类型的方式转换对象

java - Accumulo - 将超出缓冲区限制的突变集合添加到批处理编写器

java - 如何将一个列表分配给另一个列表?

java - 如何通过计算两个不同的数组数据对数据进行排序。使用集合

Java - 模式匹配

java - 根据一些预定义的类别标记单词