有没有更简单的方法来获取Java数组的最后一个元素?

有没有更简单的方法来获取Java数组的最后一个元素?,java,Java,我想把句子分成两半,拿到最后一个代币。我觉得我这样做有点太尴尬了。基本上,我希望第二句话更短。可能吗 编辑:我要找的是:1)无需单独声明数组2)无需将句子拆分两次。如果有一个名为last的数组方法就好了。我怀疑这是不可能的,但我想确定一下。您只需要将其拆分一次,然后获取最后一个元素 String sentence = "Any simpler way to get the last element of a Java array?"; String lastToken = sentence.sp

我想把句子分成两半,拿到最后一个代币。我觉得我这样做有点太尴尬了。基本上,我希望第二句话更短。可能吗


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

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

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

这很尴尬,但除非你事先知道字符串的长度,否则真的没有其他方法可以做到这一点。

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

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

如果您只做一次,那么Peter Lawrey的解决方案会更短,尽管在我看来,它比原始版本更难理解

如果您在多个地方执行此操作,则以下操作更好:

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

public String lastToken(String str, String separatorRegex) {
    String tokens[] = str.split(separatorRegex);
    return tokens[tokens.length - 1];
}
。。。这比任何聪明的黑客都要优雅。。。国际海事组织


我更一般的观点是,试图缩短一行代码所花费的时间可能是浪费时间。。。或者更糟:

  • 从其他人阅读代码的角度来看,一行与两行是不相关的
  • 如果使行变短的聪明的hack是晦涩难懂的,那么使用它实际上是做了一件坏事。。。从下一个读取/维护代码的人的角度来看
  • 如果聪明的黑客比不雅观的版本效率低,那么您可能引入了性能问题


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

您正在将同一事物拆分两次。你不想那样做。同样,更短并不意味着更好。所以您正在寻找
数组?
?只是从
\\s+
的最后一个索引中的子字符串,或者空白字符,例如
'
。为什么这会被否决这么多?是什么阻止您创建自己的
字符串last(String[]array)
方法并调用它<代码>字符串lastToken=last(句子.split(“”))为什么投反对票??up vote 1+当然你可以将
tokens[tokens.length-1]
逻辑抽象成一些实用函数,然后你可以调用它们,比如
getLastElement(句子.拆分(“”)
或者其他什么。对不起,我没有明确我的意图。我不想通过单独声明数组来实现这一点。@TerryLi:为什么这是一个完全荒谬的要求?如果出于某种原因,句子中不包含标记,它将抛出一个异常。不过,这对于字符串的情况是非常特殊的。它不适用于实际数组,这才是真正的问题……他指的数组是字符串拆分时生成的数组。@我知道,但我理解字符串拆分更多的是作为一种获取示例的方式。我发现这一个非常优雅。谢谢,非常优雅。虽然我会使用
sentance.trim().replaceAll(“.*”,”)以避免由于尾随空格而导致空字符串。@jlordo-已经指出了这一点。但是,您缺少的是原始解决方案也存在相同的问题。。。因此,您可以将其视为任何解决方案都应以相同方式运行的要求。此解决方案非常容易出错!“你好,韦尔特!”=>“韦尔特!”“你好,韦尔特!”=>”。这不优雅,这很危险!Split在这种情况下起作用,同时也进行修剪。听取了建议。非常感谢你。
String lastToken = lastToken(sentence, " ");