Quelle est la différence entre String.subString () et String.subSequence ()
String.subSequence()
a la suite de javadoc:
Retourne une nouvelle séquence de caractères qui est une sous-suite de cette
la séquence.Une invocation de cette méthode de la forme
str.subSequence(begin, end)
se comporte exactement de la même manière que l'invocation
str.substring(begin, end)
Cette méthode est définie de sorte que la classe String peut mettre en œuvre la
CharSequence interface.
Quelqu'un peut-il m'expliquer?
source d'informationauteur code511788465541441
Vous devez vous connecter pour publier un commentaire.
À l'aide de
str.subSequence(begin, end)
renvoie une CharSequence qui est en lecture seule forme de la chaîne représentée comme une séquence de caractères.Par Exemple:
Sa lecture seulement dans le sens que vous ne pouvez pas changer le
chars
dans leCharSequence
sans instancier une nouvelle instance d'unCharSequence
.Si vous devez utiliser
str.subSequence(begin, end)
vous pouvez convertir le résultat d'uneString
:et l'utilisation de tous les
String
opérateurs commesubSequence += " World";
Sous-suite
Sous-suite est une généralisation de la sous-chaîne, suffixe et préfixe. Trouver la chaîne la plus longue, qui est une sous-suite de deux ou plusieurs chaînes de caractères est connu comme la plus longue sous-suite commune de problème.
Exemple: La chaîne "anna" est une sous-suite de la chaîne "la banane":
Sous-chaîne
Une sous-chaîne d'une chaîne de caractères est un préfixe, un suffixe de la chaîne, et de manière équivalente par un suffixe d'un préfixe. Si une chaîne est une chaîne d'un autre, c'est aussi une sous-suite, qui est un concept plus général.
Exemple: La chaîne "ana" est une sous-chaîne (et sous-suite) de bananes à deux positions différentes:
Lire plus ici.
Mais aussi loin que Java est concerné, il n'y a pas de différence dans leur utilisation comme indiqué clairement dans le javadoc. Aussi comme il est indiqué dans il y, la méthode
subSequence
n'a été mis en œuvre dans la classeString
de sorte à ce qu'il soit conforme à laCharSequence
interface.Et cette méthode est le nom est en effet juste un abus de langage.
Si vous regardez la source de la Chaîne, vous verrez que la sous-suite fait des appels de sous-chaîne. La seule chose qu'il fait différente de la sous-chaîne est il jette de la chaîne CharSequence.
Pour comprendre cela, la première chose que vous devez savoir, c'est que quelle est la différence entre sous-chaîne et sous-suite
sous-chaîne est un continue partie ou sous-partie d'une chaîne
alors que
sous-suite est la partie d'une chaîne ou d'une séquence, qui peut être continue ou non, mais la ordre des éléments est maintenu
Exemple
disons str_a="bonjour à tous"
De plus, nous avons les chaînes de caractères suivantes:
str_b="bonjour", str_c="ello th", str_d="hllo", str_e="ho edh", str_f="il bonjour"
str_b est une sous-chaîne de str_a, str_c est aussi une sous-chaîne de str_a mais str_d n'est pas une sous-chaîne de str_a que cette sous-chaîne n'est pas continue.
Maintenant tous les subtrings sont sous-séquences que l'ordre est maintenu.
str_d est une sous-suite de str_a, str_e est aussi une sous-suite de str_a cependant str_f n'est pas une sous-suite de str_a que dans ce cas, le ordre n'est pas maintenu.
Maintenant pour java, il n'est pas approprié des précisions au sujet de ces méthodes dans la javadoc.
En bref, il n'a pas beaucoup d'importance pour
String
objets. Ils sont équivalents, sauf si vous avez besoin de passer le résultat de quelque chose qui ne prendString
dans ce cas, vous devez utiliser lesubtring(int,int)
la version ou de la fonte de lasubsequence(int,int)
version à unString
(parce que c'est ce qu'il est, à l'interne).String.substring(int,int)
existé d'abord, parce queString
existé en premier. Dans Java 1.4,CharSequence
a été ajouté, et quelqu'un apparemment rendu compte qu'il serait utile d'avoir la même fonctionnalité, mais qui a retourné unCharSequence
au lieu deString
(pour la souplesse). Ainsi, le long est venuCharSequence.subSequence(int,int)
. Cependant, depuisString
implémenteCharSequence
String
hérité apparemment redondante méthode.Fondamentalement, c'est juste ce qui est retourné. Une Chaîne et l'autre un CharSequence (que vous pouvez lancer comme une chaîne de caractères).
Vous devez utiliser la sous-suite lorsque vous avez besoin d'un CharSequence type de variable.