获取Java数组的最后一个元素的任何更简单的方法?

时间:2013-03-09 23:08:44

标签: java

String sentence = "Any simpler way to get the last element of a Java array?";
String lastToken = sentence.split(" ")[sentence.split(" ").length-1];

我想分割句子并获得最后一个标记。我觉得我这样做有点太尴尬了。基本上,我希望第二个陈述更短。这可能吗?

编辑:我正在寻找:1)无需单独声明数组2)无需将句子拆分两次。如果有一个名为last的数组方法会很好。我怀疑这是不可能的,但我想确定。

4 个答案:

答案 0 :(得分:14)

您只需将其拆分一次,然后取最后一个元素。

String sentence = "Any simpler way to get the last element of a Java array?";
String[] tokens = sentence.split(" ");
String lastToken = tokens[tokens.length-1];

这很尴尬,但除非你预先知道字符串的长度,否则除此之外别无他法。

答案 1 :(得分:14)

获取最后一个标记/单词的另一种方法

String lastToken = sentance.replaceAll(".* ", "");

答案 2 :(得分:4)

String sentence = "Any simpler way to get the last element of a Java array?";
String lastToken = sentence.substring( sentence.lastIndexOf(" ") + 1);

答案 3 :(得分:4)

如果你这样做一次,那么Peter Lawrey的解决方案就更短了,虽然IMO比原版更难理解。

如果您在多个地方这样做,那么以下情况会更好:

public String lastToken(String str, String separatorRegex) {
    String tokens[] = str.split(separatorRegex);
    return tokens[tokens.length - 1];
}

然后

String lastToken = lastToken(sentence, " ");

......比任何聪明的黑客都更优雅...... IMO。


我更普遍的观点是,花费一段时间来缩短代码的时间可能浪费时间......或者更糟:

  • 从SOMEONE ELSE读取代码的角度来看,一行与两行无关。
  • 如果聪明的黑客让线条缩短是不明确的,那么你实际上是通过使用它做了一个坏事......从下一个阅读/维护你的代码的人的角度来看。
  • 如果聪明的黑客效率低于不优雅的版本,那么可能引入了性能问题。

但是如果你在许多地方重复那行代码(或类似代码),那么最好的解决方案就是使用程序抽象。写一个静态或实例方法......一次......并多次调用它。