- java-map-to-string-conversion
- 2. Basic Map Example
- 3. Convert a Map to a String by Iterating
- 4. Convert a Map to a String Using Java Streams
- 5. Convert a Map to a String Using Guava
- 7. Convert a String to a Map Using Streams
- 8. Convert a String to a Map Using Guava
- 9. Conclusion
- Преобразование Map в String в Java
- 2. Пример основной карты
- 3. Преобразование карты в строку путем итерации
- 4. Преобразование карты в строку с использованием потоков Java .
- 5. Преобразование карты в строку с помощью гуавы
- 6. Преобразование карты в строку с помощью Apache Commons
- 7. Преобразование строки в карту с использованием потоков
- 8. Преобразование строки в карту с помощью гуавы
- 9. Заключение
- Convert Java Stream to String
- Using Collectors.joining
- Using Stream.reduce
- Преобразование карты в строку в Java
- 1. Обзор
- 2. Пример базовой карты
- 3. Преобразуйте карту в строку путем итерации
- 4. Преобразуйте карту в строку с помощью потоков Java
- 5. Преобразуйте карту в строку с помощью Guava
- 7. Преобразуйте строку в карту с помощью потоков
- 9. Заключение
- Читайте ещё по теме:
java-map-to-string-conversion
In this tutorial, we’ll focus on conversion from a Map to a String and the other way around.
First, we’ll see how to achieve these using core Java methods, and afterward, we’ll use some third-party libraries.
2. Basic Map Example
In all examples, we’re going to use the same Map implementation:
Map wordsByKey = new HashMap<>(); wordsByKey.put(1, "one"); wordsByKey.put(2, "two"); wordsByKey.put(3, "three"); wordsByKey.put(4, "four");
3. Convert a Map to a String by Iterating
Let’s iterate over all the keys in our Map and, for each of them, append the key-value combination to our resulting StringBuilder object.
For formatting purposes, we can wrap the result in curly brackets:
public String convertWithIteration(Map map) < StringBuilder mapAsString = new StringBuilder("<"); for (Integer key : map.keySet()) < mapAsString.append(key + "=" + map.get(key) + ", "); >mapAsString.delete(mapAsString.length()-2, mapAsString.length()).append(">"); return mapAsString.toString(); >
To check if we converted our Map correctly, let’s run the following test:
@Test public void givenMap_WhenUsingIteration_ThenResultingStringIsCorrect() < String mapAsString = MapToString.convertWithIteration(wordsByKey); Assert.assertEquals("", mapAsString); >
4. Convert a Map to a String Using Java Streams
To perform conversion using streams, we first need to create a stream out of the available Map keys.
Secondly, we’re mapping each key to a human-readable String.
Finally, we’re joining those values, and, for the sake of convenience, we’re adding some formatting rules using the Collectors.joining() method:
public String convertWithStream(Map map) < String mapAsString = map.keySet().stream() .map(key ->key + "=" + map.get(key)) .collect(Collectors.joining(", ", "")); return mapAsString; >
5. Convert a Map to a String Using Guava
Let’s add Guava into our project and see how we can achieve the conversion in a single line of code:
com.google.guava guava 27.0.1-jre
To perform the conversion using Guava’s Joiner class, we need to define a separator between different Map entries and a separator between keys and values:
public String convertWithGuava(Map map) < return Joiner.on(",").withKeyValueSeparator(" sect2">6. Convert a Map to a String Using Apache Commons
To use Apache Commons, let’s add the following dependency first:
org.apache.commons commons-collections4 4.2
The joining is very straightforward – we just need to call the StringUtils.join method:
public String convertWithApache(Map map)
One special mention goes to the debugPrint method available in Apache Commons. It is very useful for debugging purposes.
MapUtils.debugPrint(System.out, "Map as String", wordsByKey);
The debug text will be written to the console:
Map as String = < 1 = one java.lang.String 2 = two java.lang.String 3 = three java.lang.String 4 = four java.lang.String >java.util.HashMap
7. Convert a String to a Map Using Streams
To perform conversion from a String to a Map, let’s define where to split on and how to extract keys and values:
public Map convertWithStream(String mapAsString) < Mapmap = Arrays.stream(mapAsString.split(",")) .map(entry -> entry.split(" sect2"> 8. Convert a String to a Map Using Guava
A more compact version of the above is to rely on Guava to do the splitting and conversion for us in a one-line process:
public Map convertWithGuava(String mapAsString)
9. Conclusion
In this tutorial, we saw how to convert a Map to a String and the other way around using both core Java methods and third-party libraries.
The implementation of all of these examples can be found over on GitHub.
Преобразование Map в String в Java
В этом руководстве мы сосредоточимся на преобразовании карты в строку и наоборот.
Сначала мы увидим, как добиться этого с помощью основных методов Java, а затем воспользуемся некоторыми сторонними библиотеками.
2. Пример основной карты
Во всех примерах мы будем использовать одну и ту же реализацию Map :
MapInteger, String> wordsByKey = new HashMap>(); wordsByKey.put(1, "one"); wordsByKey.put(2, "two"); wordsByKey.put(3, "three"); wordsByKey.put(4, "four");
3. Преобразование карты в строку путем итерации
Давайте переберем все ключи в нашей карте и для каждого из них добавим комбинацию ключ-значение к нашему результирующему объекту StringBuilder .
Для целей форматирования мы можем заключить результат в фигурные скобки:
public String convertWithIteration(MapInteger, ?> map) StringBuilder mapAsString = new StringBuilder("); for (Integer key : map.keySet()) mapAsString.append(key + "=" + map.get(key) + ", "); > mapAsString.delete(mapAsString.length()-2, mapAsString.length()).append(">"); return mapAsString.toString(); >
Чтобы проверить, правильно ли мы преобразовали нашу карту , давайте запустим следующий тест:
@Test public void givenMap_WhenUsingIteration_ThenResultingStringIsCorrect() String mapAsString = MapToString.convertWithIteration(wordsByKey); Assert.assertEquals("", mapAsString); >
4. Преобразование карты в строку с использованием потоков Java .
Чтобы выполнить преобразование с использованием потоков, нам сначала нужно создать поток из доступных ключей Map .
Во-вторых, мы сопоставляем каждый ключ с удобочитаемой строкой .
Наконец, мы объединяем эти значения и для удобства добавляем некоторые правила форматирования с помощью метода Collectors.joining() :
public String convertWithStream(MapInteger, ?> map) String mapAsString = map.keySet().stream() .map(key -> key + "=" + map.get(key)) .collect(Collectors.joining(", ", ", ">")); return mapAsString; >
5. Преобразование карты в строку с помощью гуавы
Давайте добавим Guava в наш проект и посмотрим, как мы можем добиться преобразования в одной строке кода:
dependency> groupId>com.google.guavagroupId> artifactId>guavaartifactId> version>31.0.1-jreversion> dependency>
Чтобы выполнить преобразование с использованием класса Joiner в Guava , нам нужно определить разделитель между различными записями карты и разделитель между ключами и значениями:
public String convertWithGuava(MapInteger, ?> map) return Joiner.on(",").withKeyValueSeparator("=").join(map); >
6. Преобразование карты в строку с помощью Apache Commons
Чтобы использовать Apache Commons , давайте сначала добавим следующую зависимость:
dependency> groupId>org.apache.commonsgroupId> artifactId>commons-collections4artifactId> version>4.2version> dependency>
Соединение очень простое — нам просто нужно вызвать метод StringUtils.join :
public String convertWithApache(Map map) return StringUtils.join(map); >
Отдельного упоминания заслуживает метод debugPrint , доступный в Apache Commons. Это очень полезно для целей отладки.
MapUtils.debugPrint(System.out, "Map as String", wordsByKey);
отладочный текст будет записан в консоль:
Map as String = 1 = one java.lang.String 2 = two java.lang.String 3 = three java.lang.String 4 = four java.lang.String > java.util.HashMap
7. Преобразование строки в карту с использованием потоков
Чтобы выполнить преобразование из String в Map , давайте определим, где разбивать и как извлекать ключи и значения:
public MapString, String> convertWithStream(String mapAsString) MapString, String> map = Arrays.stream(mapAsString.split(",")) .map(entry -> entry.split("=")) .collect(Collectors.toMap(entry -> entry[0], entry -> entry[1])); return map; >
8. Преобразование строки в карту с помощью гуавы
Более компактная версия вышеизложенного состоит в том, чтобы полагаться на Guava, который выполняет разделение и преобразование для нас в однострочном процессе:
public MapString, String> convertWithGuava(String mapAsString) return Splitter.on(',').withKeyValueSeparator('=').split(mapAsString); >
9. Заключение
В этой статье мы увидели, как преобразовать карту в строку и наоборот, используя как основные методы Java, так и сторонние библиотеки.
Реализацию всех этих примеров можно найти на GitHub .
Convert Java Stream to String
On this page we will learn how to convert Java Stream to String. To convert stream into string, we can use following methods.
1. Collectors.joining
2. Stream.reduce
Now let us discuss them using examples.
Contents
Using Collectors.joining
The Collectors.joining returns a Collector that concatenates the input elements, separated by the specified delimiter, in encounter order.
public static Collector joining(CharSequence delimiter)
The Collector is passed as argument to collect method that performs a mutable reduction operation on the elements using a Collector .
R collect(Collector collector)
package com.concretepage; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class UsingJoining < public static void main(String[] args) < //example 1 String s1 = Stream.of("A", "B", "C", "D").collect(Collectors.joining()); System.out.println(s1); //example 2 Listlist = new ArrayList<>(); list.add("Gauri"); list.add("Lakshmi"); list.add("Saraswati"); String s2 = list.stream().collect(Collectors.joining(",")); System.out.println(s2); //example 3 List cityList = Arrays.asList(new City(1, "Varanasi"), new City(2, "Prayag"), new City(3, "Ayodhya")); String s3 = cityList.stream() .map(c -> c.getName()) .collect(Collectors.joining("|")); System.out.println(s3); //example 4 String s4 = cityList.stream() .map(c -> new StringBuffer(c.getName()).append("-").append(c.getId())) .collect(Collectors.joining("|")); System.out.println(s4); > > class City < private int id; private String name; public City(int id, String name) < this.id = id; this.name = name; >//Sets and Gets >
ABCD Gauri,Lakshmi,Saraswati Varanasi|Prayag|Ayodhya Varanasi-1|Prayag-2|Ayodhya-3
Using Stream.reduce
The Stream.reduce performs a reduction on the elements of this stream, using an associative accumulation function and returns Optional .
Optional reduce(BinaryOperator accumulator)
package com.concretepage; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class UsingReduce < public static void main(String[] args) < //example 1 String s1 = Stream.of(1, 2, 3, 4).map(e ->e.toString()).reduce("", String::concat); System.out.println(s1); //example 2 List list = new ArrayList<>(); list.add("Gauri"); list.add("Lakshmi"); list.add("Saraswati"); String s2 = list.stream(). reduce((x, y) -> new StringBuffer(x).append("-").append(y).toString()).get(); System.out.println(s2); //example 3 String s3 = Stream.of(new City(1, "Varanasi"), new City(2, "Prayag"), new City(3, "Ayodhya")) .map(c -> c.getName()) .reduce((x, y) -> new StringBuffer(x).append("-").append(y).toString()).get(); System.out.println(s3); > >
1234 Gauri-Lakshmi-Saraswati Varanasi-Prayag-Ayodhya
Преобразование карты в строку в Java
Узнайте, как преобразовать карту в строку и наоборот, используя как основные методы Java, так и сторонние библиотеки.
1. Обзор
В этом уроке мы сосредоточимся на преобразовании из Map в String и наоборот.
Во-первых, мы посмотрим, как достичь этого с помощью основных методов Java, а затем мы будем использовать некоторые сторонние библиотеки.
2. Пример базовой карты
Во всех примерах мы будем использовать одну и ту же реализацию Map :
Map wordsByKey = new HashMap<>(); wordsByKey.put(1, "one"); wordsByKey.put(2, "two"); wordsByKey.put(3, "three"); wordsByKey.put(4, "four");
3. Преобразуйте карту в строку путем итерации
Давайте переберем все ключи в нашей карте и для каждого из них добавим комбинацию ключ-значение к нашему результирующему объекту StringBuilder |.
Для целей форматирования мы можем заключить результат в фигурные скобки:
public String convertWithIteration(Map map) < StringBuilder mapAsString = new StringBuilder("<"); for (Integer key : map.keySet()) < mapAsString.append(key + "=" + map.get(key) + ", "); >mapAsString.delete(mapAsString.length()-2, mapAsString.length()).append(">"); return mapAsString.toString(); >
Чтобы проверить, правильно ли мы преобразовали нашу карту , давайте проведем следующий тест:
@Test public void givenMap_WhenUsingIteration_ThenResultingStringIsCorrect() < String mapAsString = MapToString.convertWithIteration(wordsByKey); Assert.assertEquals("", mapAsString); >
4. Преобразуйте карту в строку с помощью потоков Java
Чтобы выполнить преобразование с помощью потоков, нам сначала нужно создать поток из доступных ключей Map .
Во-вторых, мы сопоставляем каждый ключ с читаемой человеком строкой .
Наконец, мы объединяем эти значения и для удобства добавляем некоторые правила форматирования с помощью метода Collectors.joining() :
public String convertWithStream(Map map) < String mapAsString = map.keySet().stream() .map(key ->key + "=" + map.get(key)) .collect(Collectors.joining(", ", "")); return mapAsString; >
5. Преобразуйте карту в строку с помощью Guava
Давайте добавим Guava в наш проект и посмотрим, как мы можем добиться преобразования в одной строке кода:
com.google.guava guava 27.0.1-jre
Чтобы выполнить преобразование с помощью класса Joiner Guava, нам нужно определить разделитель между различными записями Map и разделитель между ключами и значениями:
public String convertWithGuava(Map map) < return Joiner.on(",").withKeyValueSeparator(" https://search.maven.org/search?q=a:commons-collections4%20AND%20g:org.apache.commons" rel="noopener noreferrer" target="_blank">Apache Commons , давайте сначала добавим следующую зависимость: "> org.apache.commons commons-collections4 4.2
Соединение очень простое – нам просто нужно вызвать StringUtils.метод join :
public String convertWithApache(Map map)
Одно особое упоминание относится к методу debug Print , доступному в Apache Commons. Это очень полезно для целей отладки.
MapUtils.debugPrint(System.out, "Map as String", wordsByKey);
Отладочный текст будет записан на консоль:
Map as String = < 1 = one java.lang.String 2 = two java.lang.String 3 = three java.lang.String 4 = four java.lang.String >java.util.HashMap
7. Преобразуйте строку в карту с помощью потоков
Чтобы выполнить преобразование из String в Map , давайте определим, где нужно разделить и как извлечь ключи и значения:
public Map convertWithStream(String mapAsString) < Mapmap = Arrays.stream(mapAsString.split(",")) .map(entry -> entry.split(" wp-block-codemirror-blocks-code-block code-block">">public Map convertWithGuava(String mapAsString)
9. Заключение
В этом уроке мы рассмотрели, как преобразовать Map в String и наоборот, используя как основные методы Java, так и сторонние библиотеки.
Реализацию всех этих примеров можно найти на GitHub .
Читайте ещё по теме: