Un moyen plus simple d’obtenir le dernier élément d’un tableau Java?

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

Je voudrais diviser la phrase et obtenir le dernier jeton. Je trouve que ma façon de faire est un peu trop délicate. Fondamentalement, je veux que la deuxième déclaration soit plus courte. Est-ce possible?

Edit : Ce que je recherche: 1) pas besoin de déclarer le tableau séparément 2) pas besoin de scinder la phrase deux fois. Ce serait bien s’il existe une méthode appelée last avec array. Je soupçonne que c’est impossible, mais je veux en être sûr.

Une autre façon d’obtenir le dernier mot / mot

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

Il suffit de le scinder une fois et de prendre le dernier élément.

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

C’est maladroit, mais il n’y a vraiment aucun autre moyen de le faire à moins d’avoir une connaissance préalable de la longueur de la chaîne.

Si vous ne le faites qu’une fois, la solution de Peter Lawrey est plus courte, bien que l’OMI soit plus difficile à comprendre que la version originale.

Si vous le faites à plusieurs endroits, voici ce qui est préférable:

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

et alors

 Ssortingng lastToken = lastToken(sentence, " "); 

… qui est plus élégant que n’importe quel hack intelligent … IMO.


Mon point plus général est que le temps passé à essayer de raccourcir une seule ligne de code est probablement une perte de temps … ou pire:

  • Du sharepoint vue de quelqu’un qui lit votre code, une ligne par rapport à deux lignes est sans importance.
  • Si le hack intelligent qui rend la ligne plus courte est obscur, alors vous avez réellement fait un BAD THING en l’utilisant … du sharepoint vue du prochain gars qui lit / maintient votre code.
  • Si le piratage intelligent est moins efficace que la version inélégante, vous avez peut- être introduit un problème de performances.

Mais si vous répétez cette ligne de code (ou similaire) à de nombreux endroits, la meilleure solution consiste à utiliser une abstraction procédurale. Ecrivez une méthode statique ou d’instance … une fois … et appelez-la plusieurs fois.

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