JavaRush /Блог /Random /Кофе-брейк #274. Обработка строк в стиле функционального ...

Кофе-брейк #274. Обработка строк в стиле функционального программирования Java. Что такое файл .properties в Java

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

Обработка строк в стиле функционального программирования Java

Источник: DZone В этой статье рассмотрено несколько методов класса String, которые позволяют выполнять обработку строк в стиле функционального программирования. Кофе-брейк #274. Обработка строк в стиле функционального программирования Java. Что такое файл .properties в Java - 1В последних обновлениях версий Java методы класса String получили ряд существенных дополнений. Некоторые методы теперь создают экземпляры класса Stream, часть из них являются функциями высшего порядка. Целью этих дополнений методов является более упрощенный подход к обработке строк в потокоориентированном виде. Потокоориентированная обработка строк дает преимущество в виде упрощения кода и повышения его выразительности. В частности, это упрощает применение таких операций, как фильтрация, сопоставление, сокращение и других. Еще одним преимуществом является то, что Stream API обеспечивает параллельную обработку, что дает возможность использовать параллельные потоки с помощью методов, возвращающих потоки. Также это позволяет применять многоядерные процессоры для эффективной обработки больших строк. Давайте рассмотрим несколько методов класса String, которые позволяют выполнять обработку в стиле функционального программирования.

chars()

chars(): этот метод облегчает эффективное управление символами в Java, возвращая IntStream. IntStream представляет собой последовательность значений Integer, каждое из которых соответствует кодовому значению того или иного символа Unicode в предоставленной строке. Кодовое значение — это числовой идентификатор, присвоенный символу в стандарте Unicode. Оно необходимо для идентификации и кодирования символов. Давайте разберемся с методом chars() на примере. Напишем программу, удаляющую заданный символ из строки. Для начала рассмотрим решение этой проблемы с помощью императивного, нефункционального подхода, избегая использования методологии chars() или stream.

private static String removeChar(String input, char c){
     StringBuilder sb = new StringBuilder();
     char[] charArray = input.toCharArray();
     for (char ch : charArray) {
         if (ch != c) {
             sb.append(ch);
         }
     }
     return sb.toString();
 }
Теперь сравним это с функциональным подходом:

private static String removeChar(String str, char c){
     return str.chars()
               .filter(ch -> ch != c)
               .mapToObj(ch -> String.valueOf((char) ch))
               .collect(Collectors.joining());
 }
Императивный, нефункциональный подход включает традиционную итерацию по символам с использованием StringBuilder для построения измененной строки. Тогда как функциональный подход использует метод chars() и Stream API, обеспечивая более краткое и выразительное решение.

transform()

transform(): Функция преобразования (transform) — это функция высшего порядка, которая принимает функцию в качестве аргумента. Функция transform предлагает более краткий и функциональный способ применения преобразований к строке. Функцию transform можно использовать, например, для объединения преобразований в строку. Рассмотрим сценарий, в котором вы хотите очистить и отформатировать пользовательский ввод, введенный в форму. Пользователи могут вводить свои имена с лишними пробелами, заглавной буквой в середине слова и другими ненужными символами. Для стандартизации и очистки этих входных данных можно использовать цепочку строк.

String userInput = "  JoHN-dOe  ";
 String cleanedInput = userInput
                         .transform(String :: trim)
                         .transform(String :: toLowerCase)
                         .transform(user -> user.replaceAll("-", ""));
 cleanedInput // johndoe

lines()

lines(): функция lines возвращает поток строк, извлеченных из заданной строки, разделенных символами конца строки, такими как \n, \r и \r\n. Метод Java String lines() выглядит более выгодно по сравнению с методом split() благодаря ленивой подаче элементов и более быстрому обнаружению терминаторов строк. В случаях, когда строка пуста, функция lines возвращает ноль строк.

String text = "The lines function returns a stream of lines extracted ,\nThe Java String lines() method proves advantageous ;\nIn cases where the string is empty,\n"
         + "the lines' function returns zero lines.";
 
 text.lines()
         .map(String :: toUpperCase)
         .filter(line -> line.contains("I"))
         .forEach(System.out::println);
Строка “text” содержит несколько строк текста. Мы используем метод lines() для получения потока строк из текста. Затем мы используем операцию map для преобразования каждой строки в верхний регистр. Операция filter применяется для сохранения только строк, содержащих букву “I”, а операция forEach печатает измененные строки. Описанные функции предоставляют мощный и лаконичный способ работы со строками. Они предлагают функциональный подход, используя потоки для эффективной обработки и фильтрации, обеспечивая при этом неизменность. Объединение этих функций с другими потоковыми операциями позволяет выполнять сложные, но лаконичные преобразования, создавая более чистый и функциональный стиль.

Что такое файл .properties в Java

Источник: Medium Изучив это учебное руководство, вы научитесь правильно использоваться в своей работе файл properties и поймете, для чего он необходим. В Java “файл свойств” (properties file) — это файл, в котором хранятся данные конфигурации в формате пары ключ-значение (key-value). Этот файл обычно используется для хранения настроек конфигурации для приложений Java. Файлы properties обычно представляют собой простые текстовые файлы с расширением .properties. Вот базовый пример файла properties. В этом примере мы создадим файл с именем (config.properties).

# Database Configuration
database.url=jdbc:mysql://localhost:3306/mydatabase
database.username=test
database.password=password
port= 9000

# Server Configuration
server.host=127.0.0.1
server.port=8080
В Java класс Properties используется для работы с файлами properties. Этот класс расширяет Hashtable и представляет постоянный набор свойств (properties). Вот простой пример того, как вы можете использовать класс Properties для чтения из файла properties.

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class PropertiesDemo {

    public void dbConnection() {

        Properties properties = new Properties();
        FileInputStream fileInputStream = null;
        try {

            fileInputStream = new FileInputStream("config.properties");
            properties.load(fileInputStream);

            String url = properties.getProperty("database.url");
            String username = properties.getProperty("database.username");
            String password = properties.getProperty("database.password");
            String port = properties.getProperty("port");
            String serverHost = properties.getProperty("server.host");
            String serverPort = properties.getProperty("server.port");

            System.out.println("URL: " + url);
            System.out.println("Username: " + username);
            System.out.println("Password: " + password);
            System.out.println("Port: " + port);
            System.out.println("Server Host: " + serverHost);
            System.out.println("Server Port: " + serverPort);


        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        } finally {
            if (fileInputStream != null) {
                try {
                    fileInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args) {
        PropertiesDemo propertiesDemo = new PropertiesDemo();
        propertiesDemo.dbConnection();
    }
}
В приведенном выше примере:
  1. Создаем объект Properties.

    
    Properties properties = new Properties();
    
  2. Загружаем свойства из файла config.properties методом load().
  3. С помощью метода мы извлекаем значения конкретных свойств getProperty().
  4. Затем мы распечатываем значения этих свойств.

Каково основное использование файлов properties?

Файлы properties обычно используются для хранения конфигураций, которые могут меняться со временем, например, настройки подключения к базе данных, настройки приложения и так далее. Файлы properties всегда следует создавать по указанному ниже пути. Кофе-брейк #274. Обработка строк в стиле функционального программирования Java. Что такое файл .properties в Java - 2Приятного чтения и обучения! Удачи!
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ