Краткое введение в Java Text Block
Источник: Medium В этой статье описывается синтаксис и использование Текстовых блоков (Text Block) в языке Java. Функция Text Block предоставляет разработчикам новый улучшенный способ создания многострочной строки в Java без конкатенаций и escape-последовательностей. Текстовые блоки доступны в качестве стандартной опции, начиная с Java 15. В более ранних версиях Java создание многострочной строки представляло собой запутанную смесь явных escape-последовательностей, конкатенаций строк и разделителей. Text Block устраняет большинство этих препятствий. Как использовать Text Block? Текстовый блок начинается с трех символов двойных кавычек, за которыми следует разделитель строки. В приведенном ниже примере показан традиционный способ инициализации многострочной строки.
// Old way
String html = "<html>\n" +
" <body>\n" +
" <p>Hello World</p>\n" +
" </body>\n" +
"</html>\n";
А теперь взглянем на тот же код, записанный с использованием Text Block:
// This is neat
String html = """
<html>
<body>
<p>Hello World</p>
</body>
</html>
""";
Форматирование текста
Поскольку результатом текстового блока является строка, в Text Block поддерживаются все строковые методы, такие как substring equal, trim, indexOf и другие.
"""
Java Programming""".substring(5).equals("Programming");
String designation = "Programmer";
double salary = 100.50;
String query = """
SELECT emp_id, f_name, l_name FROM "EMPLOYEE"
WHERE designation=%s
AND salary > %.2f
ORDER BY emp_id
""".formatted(designation, salary);
Text Block как аргумент метода
Вы можете использовать текстовый блок в качестве аргумента метода, как показано ниже.
System.out.println("""
Hello World!
Programming is fun
Bye!
""");
Escape-последовательности
Теперь нет необходимости во встроенных двойных кавычках.
// Old style
String code = "String message = \"Hello World!\";\n" +
"System.out.println(message)\n";
// Using text block
String code = """
String message = "Hello World!";
System.out.println(message);
""";
// Old Style
String productJson = "{\n"+
"\"productId\": p123,\n" +
"\"name\": \"Ball point pen\",\n" +
"\"price\": 16.89\n" +
"}";
// Using the text block
String productJson = """
{
"productId": p123,
"name": "Ball point pen",
"price": 16.89
}
""";
Ограничители строк (line terminators) также не нужны:
String multiline = """
This \
is \
an \
example""";
System.out.println(multiline); // Output: This is an example
Экранирование символов:
String message = """
Hello \""" world\s Hi
""";
System.out.println(message);
Вывод:
Hello """ World Hi
Предупреждение о правильном использовании
Text Block должен начинаться с трех символов двойных кавычек, за которыми следует разделитель строки. Вы не можете поместить текстовый блок в одну строку, а содержимое текстового блока не может следовать за тремя открывающимися двойными кавычками без промежуточных разделителей строк.
// ERROR
String a = """""";
// ERROR
String b = """ """;
// ERROR
String c = """
";
Заключение
Text Block помогает нам писать более читаемый и понятный код. Мы можем легко создать строку, представляющую оператор SQL, блоки HTML, JSON и другие, используя текстовый блок без запутанных escape-последовательностей и конкатенаций. Поскольку функция поддерживает все строковые методы и допускает легкую вставку значения в заполнители с помощью метода formatted, это делает ее одной из самых крутых фич в Java.Как преобразовать List в Set
Источник: Rrtutors Данное руководство рассматривает несколько методов преобразования ArrayList в HashSet. В Java поддерживаются и ArrayList, и HashSet, что дает нам возможность выбрать между ними в зависимости от конкретных требований. Эти две структуры данных совершенно разные, и каждая из них используется для разных целей. ArrayList — это класс реализации интерфейса List, используемый для хранения данных в линейном порядке, а Set — это интерфейс, содержащий класс HashSet для хранения данных. Основное различие между ними заключается в том, что HashSet не допускает дублирования записей и хранит только уникальные элементы.Способы, как преобразовать List в Set
Существует три основных простых способа преобразования List в Set в Java:- Использование наивного подхода (Naive Approach).
- Использование конструкторов.
- Использование Java 8 Stream API.
Способ 1. Наивный подход
Это один из наиболее распространенных способов преобразования List в Set, и его предпочитает большинство разработчиков, особенно новички. Этот метод очень прост и включает в себя три основных этапа:- Для начала создайте пустой Set.
- Переберите List, добавляя каждый элемент в Set.
- Используйте HashSet, чтобы добавить компоненты Set.
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Convert_Java_to_List_method1 {
public static void main(String[] args) {
List<String> IDElist = Arrays.asList("Android Studio", "Eclipse", "Netbeans", "Sublime Text");
Set<String> set = new HashSet<String>();
for(String ele : IDElist){
set.add(ele);
}
for(String ele : set){
System.out.println(ele);
}
}
}
Вывод:
Netbeans
Sublime Text
Android Studio
Eclipse
Способ 2: использование конструкторов
Это еще один простой метод, который вы можете использовать. Здесь вам просто нужно передать список, который нужно превратить в конструктор HashSet. Затем конструктор возвращает новый Set, содержащий все уникальные элементы. Давайте рассмотрим пример:
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Convert_Java_to_List_method2 {
public static void main(String[] args) {
List<String> IDElist = Arrays.asList("Android Studio", "Pycharm", "Notepad++", "Dreamweaver");
Set<String> IDEset = new HashSet<String>(IDElist);
for(String ele : IDEset){
System.out.println(ele);
}
}
}
Вывод:
Pycharm
Notepad++
Dreamweaver
Android Studio
В этом примере конструктор устранил необходимость в цикле for, который использовался в предыдущем способе 1.
Способ 3: использование Java 8 Stream API
В данном случае мы используем Java 8 Stream API для преобразования ArrayList в HashSet. Сначала мы преобразуем list в stream, а затем добавим функцию в stream. Мы будем использовать метод Collectors.toSet() в процессе collect, чтобы преобразовать его в set. Взгляните на код ниже:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.Set;
public class Convert_Java_to_List_method3 {
public static void main(String[] args) {
List<String> IDElist = Arrays.asList("Netbeans", "Android studio", "Notepad ++", "Sublime Text");
Set<String> set = IDElist.stream().collect(Collectors.toSet());
for(String ele : set){
System.out.println(ele);
}
}
}
Вывод:
Netbeans
Android studio
Notepad ++
Sublime Text
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ