Как stringbuilder преобразовать в string java
Объекты String являются неизменяемыми, поэтому все операции, которые изменяют строки, фактически приводят к созданию новой строки, что сказывается на производительности приложения. Для решения этой проблемы, чтобы работа со строками проходила с меньшими издержками в Java были добавлены классы StringBuffer и StringBuilder . По сути они напоминает расширяемую строку, которую можно изменять без ущерба для производительности.
Эти классы похожи, практически двойники, они имеют одинаковые конструкторы, одни и те же методы, которые одинаково используются. Единственное их различие состоит в том, что класс StringBuffer синхронизированный и потокобезопасный. То есть класс StringBuffer удобнее использовать в многопоточных приложениях, где объект данного класса может меняться в различных потоках. Если же речь о многопоточных приложениях не идет, то лучше использовать класс StringBuilder, который не потокобезопасный , но при этом работает быстрее, чем StringBuffer в однопоточных приложениях.
StringBuffer определяет четыре конструктора:
StringBuffer() StringBuffer(int capacity) StringBuffer(String str) StringBuffer(CharSequence chars)
Аналогичные конструкторы определяет StringBuilder:
StringBuilder() StringBuilder(int capacity) StringBuilder(String str) StringBuilder(CharSequence chars)
Рассмотрим работу этих классов на примере функциональности StringBuffer.
При всех операциях со строками StringBuffer / StringBuilder перераспределяет выделенную память. И чтобы избежать слишком частого перераспределения памяти, StringBuffer/StringBuilder заранее резервирует некоторую область памяти, которая может использоваться. Конструктор без параметров резервирует в памяти место для 16 символов. Если мы хотим, чтобы количество символов было иным, то мы можем применить второй конструктор, который в качестве параметра принимает количество символов.
Третий и четвертый конструкторы обоих классов принимают строку и набор символов, при этом резервируя память для дополнительных 16 символов.
С помощью метода capacity() мы можем получить количество символов, для которых зарезервирована память. А с помощью метода ensureCapacity() изменить минимальную емкость буфера символов:
String str = "Java"; StringBuffer strBuffer = new StringBuffer(str); System.out.println("Емкость: " + strBuffer.capacity()); // 20 strBuffer.ensureCapacity(32); System.out.println("Емкость: " + strBuffer.capacity()); // 42 System.out.println("Длина: " + strBuffer.length()); // 4
Так как в самом начале StringBuffer инициализируется строкой «Java», то его емкость составляет 4 + 16 = 20 символов. Затем мы увеличиваем емкость буфера с помощью вызова strBuffer.ensureCapacity(32) повышаем минимальную емкость буфера до 32 символов. Однако финальная емкость может отличаться в большую сторону. Так, в данном случае я получаю емкость не 32 и не 32 + 4 = 36, а 42 символа. Дело в том, что в целях повышения эффективности Java может дополнительно выделять память.
Но в любом случае вне зависимости от емкости длина строки, которую можно получить с помощью метода length() , в StringBuffer остается прежней — 4 символа (так как в «Java» 4 символа).
Чтобы получить строку, которая хранится в StringBuffer, мы можем использовать стандартный метод toString() :
String str = "Java"; StringBuffer strBuffer = new StringBuffer(str); System.out.println(strBuffer.toString()); // Java
По всем своим операциям StringBuffer и StringBuilder напоминают класс String.
Получение и установка символов
Метод charAt() получает, а метод setCharAt() устанавливает символ по определенному индексу:
StringBuffer strBuffer = new StringBuffer("Java"); char c = strBuffer.charAt(0); // J System.out.println(c); strBuffer.setCharAt(0, 'c'); System.out.println(strBuffer.toString()); // cava
Метод getChars() получает набор символов между определенными индексами:
StringBuffer strBuffer = new StringBuffer("world"); int startIndex = 1; int endIndex = 4; char[] buffer = new char[endIndex-startIndex]; strBuffer.getChars(startIndex, endIndex, buffer, 0); System.out.println(buffer); // orl
Добавление в строку
Метод append() добавляет подстроку в конец StringBuffer:
StringBuffer strBuffer = new StringBuffer("hello"); strBuffer.append(" world"); System.out.println(strBuffer.toString()); // hello world
Метод insert() добавляет строку или символ по определенному индексу в StringBuffer:
StringBuffer strBuffer = new StringBuffer("word"); strBuffer.insert(3, 'l'); System.out.println(strBuffer.toString()); //world strBuffer.insert(0, "s"); System.out.println(strBuffer.toString()); //sworld
Удаление символов
Метод delete() удаляет все символы с определенного индекса о определенной позиции, а метод deleteCharAt() удаляет один символ по определенному индексу:
StringBuffer strBuffer = new StringBuffer("assembler"); strBuffer.delete(0,2); System.out.println(strBuffer.toString()); //sembler strBuffer.deleteCharAt(6); System.out.println(strBuffer.toString()); //semble
Обрезка строки
Метод substring() обрезает строку с определенного индекса до конца, либо до определенного индекса:
StringBuffer strBuffer = new StringBuffer("hello java!"); String str1 = strBuffer.substring(6); // обрезка строки с 6 символа до конца System.out.println(str1); //java! String str2 = strBuffer.substring(3, 9); // обрезка строки с 3 по 9 символ System.out.println(str2); //lo jav
Изменение длины
Для изменения длины StringBuffer (не емкости буфера символов) применяется метод setLength() . Если StringBuffer увеличивается, то его строка просто дополняется в конце пустыми символами, если уменьшается — то строка по сути обрезается:
StringBuffer strBuffer = new StringBuffer("hello"); strBuffer.setLength(10); System.out.println(strBuffer.toString()); //"hello " strBuffer.setLength(4); System.out.println(strBuffer.toString()); //"hell"
Замена в строке
Для замены подстроки между определенными позициями в StringBuffer на другую подстроку применяется метод replace() :
StringBuffer strBuffer = new StringBuffer("hello world!"); strBuffer.replace(6,11,"java"); System.out.println(strBuffer.toString()); //hello java!
Первый параметр метода replace указывает, с какой позиции надо начать замену, второй параметр — до какой позиции, а третий параметр указывает на подстроку замены.
Обратный порядок в строке
Метод reverse() меняет порядок в StringBuffer на обратный:
StringBuffer strBuffer = new StringBuffer("assembler"); strBuffer.reverse(); System.out.println(strBuffer.toString()); //relbmessa
String Builder. To String Метод
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Преобразовывает значение типа StringBuilder в значение String.
Перегрузки
Преобразует значение данного экземпляра в String.
Преобразует значение подстроки этого экземпляра в String.
ToString()
Преобразует значение данного экземпляра в String.
public: override System::String ^ ToString();
public override string ToString ();
override this.ToString : unit -> string
Public Overrides Function ToString () As String
Возвращаемое значение
Строка, чье значение совпадает с данным экземпляром.
Примеры
В следующем примере демонстрируется вызов метода ToString. Этот пример является частью более крупного примера, предоставленного StringBuilder для класса .
// Display the number of characters in the StringBuilder // and its string. Console::WriteLine(" chars: ", sb->Length, sb->ToString());
// Display the number of characters in the StringBuilder and its string. Console.WriteLine(" chars: ", sb.Length, sb.ToString());
// Display the number of characters in the StringBuilder and its string. printfn $" chars: "
' Display the number of characters in the StringBuilder and its string. Console.WriteLine(" chars: ", sb.Length, sb.ToString())
Комментарии
Необходимо вызвать ToString метод для преобразования объекта String в StringBuilder объект, прежде чем можно будет передать строку, представленную StringBuilder объектом, в метод, имеющий String параметр, или отобразить его в пользовательском интерфейсе.
Как перевести stringbuilder в string java
Для преобразования объекта StringBuilder в строку в Java можно использовать метод toString() , который возвращает строковое представление объекта StringBuilder :
StringBuilder sb = new StringBuilder("Hello, world!"); String str = sb.toString();
Преобразование списка символов в строку в Java
В этом посте будет обсуждаться, как преобразовать список символов в строку в Java.
1. Наивное решение
Простое решение состоит в том, чтобы пройтись по списку и создать новую строку с помощью StringBuilder класс, как показано ниже:
import java . util . Arrays ;
import java . util . List ;
// Преобразование списка символов в строку в Java
class Main
public static void main ( String [ ] args )
List
StringBuilder sb = new StringBuilder ( ) ;
for ( Character ch : chars ) <
sb . append ( ch ) ;
String string = sb . toString ( ) ;
System . out . println ( string ) ; // Techie
2. Использование Java 8
В Java 8 мы можем использовать Stream с коллекторами, как показано ниже:
import java . util . Arrays ;
import java . util . List ;
import java . util . stream . Collectors ;
// Преобразование списка символов в строку в Java 8 и выше
class Main
public static void main ( String [ ] args )
List
String string = chars . stream ( ) // Stream
. map ( String :: valueOf ) // Stream
. collect ( Collectors . joining ( ) ) ;
System . out . println ( string ) ; // Techie
3. Использование библиотеки Guava
Мы можем использовать Guava Joiner класс для объединения фрагментов текста, указанных в виде массива, и возвращает результаты в виде строки. Мы можем использовать этот класс, как показано ниже:
import com . google . common . base . Joiner ;
import java . util . Arrays ;
import java . util . List ;
// Преобразование списка символов в строку в Java с использованием Guava
class Main
public static void main ( String [ ] args )
List
String string = Joiner . on ( «» ) . join ( chars ) ;
System . out . println ( string ) ; // Techie
4. Использование Apache Commons Lang
Как и Guava, Apache Commons Lang StringUtils класс предлагает join() метод, который может объединить указанные элементы массива в одну строку.
import org . apache . commons . lang3 . StringUtils ;
import java . util . Arrays ;
import java . util . List ;
// Преобразование списка символов в строку в Java с использованием Apache Commons
class Main
public static void main ( String [ ] args )
List
String string = StringUtils . join ( chars , null ) ;
System . out . println ( string ) ; // Techie
5. Использование List.toString() метод
Мы можем получить строковое представление элементов списка, заключенных в квадратные скобки ( «[]» ), а все соседние элементы разделяются запятой, за которой следует пробел «, » . Идея состоит в том, чтобы избавиться от квадратных скобок, используя substring() метод и запятая + пробел с помощью replaceAll() метод.
