Java 排序数组以获取其索引0处的指定元素

Java 排序数组以获取其索引0处的指定元素,java,collections,Java,Collections,我有一个字符串数组 String [] my_array_list = { "SOMETHING1" , "SOMETHING2" , "ALCHOHAL", "SOMETHING3" , "ALL", "SOMETHING4" }; 现在,当我对这个say array应用排序时,对我的数组列表进行排序 然后我得到这样的输出: ALCHOHAL ALL SOMETHING1 SOMETHING2 ... etc. 这是我的观点。 如果我需要字

我有一个字符串数组

String [] my_array_list = { "SOMETHING1" , "SOMETHING2" , "ALCHOHAL", 
                        "SOMETHING3" , "ALL", "SOMETHING4" };
现在,当我对这个say array应用排序时,对我的数组列表进行排序

然后我得到这样的输出:

ALCHOHAL
ALL
SOMETHING1
SOMETHING2 ... etc.
这是我的观点。 如果我需要字符串数组的索引0处的所有值,我们需要做什么。i、 在我移出之前,在字符串数组的第一个位置总是需要全部

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

这里是您可以做的:

从阵列中删除所有。 分类。 转换为。 全部在索引0处。 它将返回阵列。
最简单的解决方案是在所有前缀中添加一个前缀,使其始终以词典形式出现在开头。所有字符前面都有一个空格,因此您可以将其命名为“全部”或类似的名称。如果这不起作用,那么当它对特殊情况进行排序或实现自定义比较器时,您必须以某种方式将其从数组中删除。

一种优雅的方法是定义一个比较器,它优先于所有其他字符串:

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);
    }
  }
});

如果您有很多类似的排序要做,您可能希望将这个匿名比较器重构成一个顶级类。添加一个构造器,该构造器采用神奇的单词,并确保它在排序中首先出现。

然后将其放入排序后的数组中。排序后是否希望在数组的开头添加一个特定的元素?谢谢您的回答。让我来表演一下。“我会让你知道的。@AndroidHacker没问题:祝你好运。当你发布时,我正准备将此建议添加到我的答案中。”如果OP想要在中编程,这可能是最好的解决方案。@Duncan感谢您的回复。你的方法和Maroun一样是最好的回答很好+1.真的很好。我用过这个东西。但我们应该总是选择一些更好的方法,其异常概率较小。谢谢。@AndroidHacker我有点惊讶你接受了这个答案。这真的是最好的方法吗?@Duncan不,这不是最好的方法,但这符合我的要求,因为我不需要处理任何类型的异常。@Duncan我想这取决于OP实际使用它的目的。如果数组没有提前知道,比如说如果它是某种输入,那么定制比较器肯定是一种选择。否则,添加下划线肯定是最简单的。@AndroidHacker您指的是什么样的异常?