web-dev-qa-db-fra.com

Le moyen le plus efficace de convertir un seul caractère en un CharSequence

Quel est le moyen le plus efficace de passer un seul caractère à une méthode qui attend un CharSequence?

C'est ce que j'ai

textView.setText(new String(new char[] {c} ));

Selon les réponses données ici , c’est une façon judicieuse de le faire lorsque l’entrée est un tableau de caractères. Je me demandais s'il y avait un raccourci sournois que je pourrais appliquer dans le cas d'un caractère unique.

21
Graham Borland
textView.setText(String.valueOf(c))
39
eljenso

L'examen de l'implémentation de la méthode Character.toString(char c) révèle qu'ils utilisent presque le même code que vous:

  public String toString() {
       char buf[] = {value};
       return String.valueOf(buf);
  }

Pour plus de lisibilité, vous devriez simplement utiliser Character.toString( c ).

Un autre moyen efficace serait probablement

new StringBuilder(1).append(c);

C'est certainement plus efficace que d'utiliser l'opérateur + car, selon le javadoc:

Le langage Java fournit un support particulier pour l'opérateur de concaténation de chaînes (+) et pour la conversion d'autres objets en chaînes. La concaténation de chaînes est implémentée via la classe StringBuilder (ou StringBuffer) et sa méthode append

10
trutheality

Sténographie, comme dans le moins de caractères saisis possible:

c+""; // where c is a char

En entier:

textView.setText(c+"");
3
Charles Goodwin

Le CharSuffence le plus compact que vous pouvez obtenir lorsque vous avez une poignée de caractères est le CharBuffer. Pour initialiser ceci avec votre valeur char:

CharBuffer.wrap(new char[]{c});

Cela dit, utiliser Strings est un peu plus lisible et facile à utiliser.

3
Bruce Hamilton

Une solution sans concaténation est la suivante:

Character.valueOf(c).toString();
2
phlogratos
char c = 'y';
textView.setText(""+c);
1
Grekz