Самый эффективный способ конвертировать один символ в последовательность CharSequence - PullRequest
24 голосов
/ 07 июля 2011

Какой самый эффективный способ передать один символ методу, ожидающему CharSequence?

Вот что я получил:

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

Согласно ответамприведенный здесь , это разумный способ сделать это, когда вводом является массив символов.Мне было интересно, есть ли хитрый ярлык, который я мог бы применить в случае с одним символом.

Ответы [ 6 ]

43 голосов
/ 07 июля 2011
textView.setText(String.valueOf(c))
11 голосов
/ 07 июля 2011

Анализ реализации метода Character.toString(char c) показывает, что они используют практически тот же код, который вы используете:

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

Для удобства чтения вы должны просто использовать Character.toString( c ).

Вероятно, другим эффективным способом будет

new StringBuilder(1).append(c);

Определенно более эффективно, чем использование оператора +, поскольку, согласно javadoc:

Язык Java обеспечивает специальную поддержкуоператор конкатенации строк (+) и для преобразования других объектов в строки.Конкатенация строк реализуется с помощью класса StringBuilder (или StringBuffer) и метода его добавления

4 голосов
/ 25 апреля 2015

Самый компактный CharSequence, который вы можете получить, имея несколько символов, - это CharBuffer.Чтобы инициализировать это с вашим значением char:

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

При этом, использование Strings немного более читабельно и с ним легко работать.

3 голосов
/ 07 июля 2011

Сокращения, как в наименьшем количестве набираемых символов:

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

В полном объеме:

textView.setText(c+"");
2 голосов
/ 07 июля 2011

Решение без объединения состоит в следующем:

Character.valueOf(c).toString();
1 голос
/ 07 июля 2011
char c = 'y';
textView.setText(""+c);
...