JavaRush /Java блог /Random /Кофе-брейк #178. Краткое введение в Java Text Block. Как ...

Кофе-брейк #178. Краткое введение в Java Text Block. Как преобразовать List в Set

Статья из группы Random

Краткое введение в Java Text Block

Источник: Medium В этой статье описывается синтаксис и использование Текстовых блоков (Text Block) в языке Java. Кофе-брейк #178. Краткое введение в Java Text Block. Как преобразовать List в Set - 1Функция 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 должен начинаться с трех символов двойных кавычек, за которыми следует разделитель строки. Вы не можете поместить текстовый блок в одну строку, а содержимое текстового блока не может следовать за тремя открывающимися двойными кавычками без промежуточных разделителей строк. Кофе-брейк #178. Краткое введение в Java Text Block. Как преобразовать List в Set - 2

// ERROR
String a = """""";

// ERROR
String b = """ """;

// ERROR
String c = """
           ";

Заключение

Text Block помогает нам писать более читаемый и понятный код. Мы можем легко создать строку, представляющую оператор SQL, блоки HTML, JSON и другие, используя текстовый блок без запутанных escape-последовательностей и конкатенаций. Поскольку функция поддерживает все строковые методы и допускает легкую вставку значения в заполнители с помощью метода formatted, это делает ее одной из самых крутых фич в Java.

Как преобразовать List в Set

Источник: Rrtutors Данное руководство рассматривает несколько методов преобразования ArrayList в HashSet. Кофе-брейк #178. Краткое введение в Java Text Block. Как преобразовать List в Set - 3В Java поддерживаются и ArrayList, и HashSet, что дает нам возможность выбрать между ними в зависимости от конкретных требований. Эти две структуры данных совершенно разные, и каждая из них используется для разных целей. ArrayList — это класс реализации интерфейса List, используемый для хранения данных в линейном порядке, а Set — это интерфейс, содержащий класс HashSet для хранения данных. Основное различие между ними заключается в том, что HashSet не допускает дублирования записей и хранит только уникальные элементы.

Способы, как преобразовать List в Set

Существует три основных простых способа преобразования List в Set в Java:
  • Использование наивного подхода (Naive Approach).
  • Использование конструкторов.
  • Использование Java 8 Stream API.

Способ 1. Наивный подход

Это один из наиболее распространенных способов преобразования List в Set, и его предпочитает большинство разработчиков, особенно новички. Этот метод очень прост и включает в себя три основных этапа:
  1. Для начала создайте пустой Set.
  2. Переберите List, добавляя каждый элемент в Set.
  3. Используйте HashSet, чтобы добавить компоненты Set.
Теперь давайте пройдем по этим этапам на конкретном примере. В нем мы составим список (List) и сохраним в нем названия различных IDE для программирования. Мы также создаем пустой Set. Затем мы перебираем список, добавляя каждый элемент в Set один за другим. И наконец, мы печатаем все элементы в 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
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ