Intereting Posts
Символьная кодировка по умолчанию для Android Как захватить трафик эмулятора Genymotion с помощью WireShark? Предотвратить диалог USSD и прочитать ответ USSD? Как поворачивать представления при изменении ориентации без повторной компоновки? Как получить RotationMatrix от рыскания, подачи и рулона Выполнять сообщения обработчика в фоновом потоке Как определить поддержку emoji на Android по коду CollapsingToolbarLayout crash на 4.4 устройствах (java.lang.IllegalArgumentException: радиус должен быть> 0) Передача ArrayList любого типа методу Многоразовые контейнеры для навигации и передовая практика SecureRandom провайдер «Crypto» недоступен в Android N для детерминированного генерации ключа Отсутствующие API и auth> Зарегистрированные приложения в облачной консоли Google / Как получить ключ GCM API? Результаты пользовательского кругового обнаружения в «java.lang.UnsupportedOperationException» при приостановке? Реализация нескольких фрагментов в одном действии Динамически Android ListFragment не сохраняет пакет в onSaveInstanceState () / не извлекает пакет в onActivityCreated ()

Наиболее эффективный способ преобразования одного символа в CharSequence

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

Это то, что у меня есть:

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

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

Solutions Collecting From Web of "Наиболее эффективный способ преобразования одного символа в CharSequence"

 textView.setText(String.valueOf(c)) 

Рассмотрение реализации метода 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 ) и его метод добавления

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

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

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

 textView.setText(c+""); 

Решение без конкатенации таково:

 Character.valueOf(c).toString(); 

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

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

При этом, используя Strings, это более удобный и удобный интерфейс.

 char c = 'y'; textView.setText(""+c);