JavaRush /Java блог /Random /Кофе-брейк #179. 5 классов Java, о которых никто не знает...

Кофе-брейк #179. 5 классов Java, о которых никто не знает

Статья из группы Random
Источник: Medium Содержание этой статьи посвящено нескольким классам и методам Java, о которых мало кто знает, но которые способны улучшить ваши навыки программирования. Кофе-брейк #179. 5 классов Java, о которых никто не знает - 1Java содержит множество инструментов в своей библиотеке классов и методов. Некоторые из них мало известны в сообществе разработчиков, несмотря на то, что они, безусловно, могут внести свой вклад в вашу программу. Вот несколько из таких инструментов.

1. Класс DoubleSummaryStatistics

Класс DoubleSummaryStatistics используется для сбора статистики и сохранения информации о среднем, максимальном и минимальном значениях. По сути он может функционировать как массив: значения могут быть приняты в объект, который впоследствии записывается. Затем из этих значений можно извлечь сводные данные и информацию. Класс DoubleSummaryStatistics создается с помощью конструктора. Этот конструктор будет пустым и не предоставит экземпляру ни статистической информации, ни каких-либо значений. Синтаксис:

DoubleSummaryStatistics name = new DoubleSummaryStatistics()
Методы:
  • getAverage() — возвращает среднее значение записанных значений.
  • accept() — записывает другое значение в объект.
  • getCount() — возвращает количество значений в объекте.
  • getSum() — возвращает сумму записанных значений.
Пример:

DoubleSummaryStatistics c = new DoubleSummaryStatistics();
c.accept(10);
c.accept(20);
c.accept(30);
System.out.println("Average: " + c.getAverage());
System.out.println("Sum: " + c.getSum());
System.out.println("Count: " + c.getCount());

/*
Output:
Average: 20.0
Sum: 60.0
Count: 3
*/

2. The IntSummaryStatistics Class

IntSummaryStatistics — это класс для управления и обработки статистических данных. Он обрабатывает объекты Integer и собирает важную информацию о предоставленных данных, таких как их сумма, среднее значение и так далее. Иными словами, это отличный помощник для программистов при работе с данными и статистикой, который обеспечивает легкий доступ к определенным фрагментам информации. Хотя IntSummaryStatistics предназначен для работы с потоками, это не единственное его предназначение. Вы можете заставить его принимать значения в свой массив статистических данных, используя, например, list и iterator. Объект IntSummaryStatistics можно инициализировать, как и любой другой стандартный класс/объект. Синтаксис:

IntSummaryStatistics name = new IntSummaryStatistics();
Методы:
  • accept() — принимает/добавляет целочисленное значение, переданное в параметрах, в данные объекта IntSummaryStatistics.
  • getAverage() — возвращает среднее значение всех целых чисел, обработанных в объекте IntSummaryStatistics.
  • getCount() — возвращает количество целых чисел, обработанных в объекте IntSummaryStatistics.
Пример:

IntSummaryStatistics data = new IntSummaryStatistics();
List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Iterator<Integer> iter = nums.listIterator();

while (iter.hasNext()){
    data.accept(iter.next());
}
System.out.println("Average: " + data.getAverage());
System.out.println("Count: " + data.getCount());

/*
Output:
Average: 5.5
Count: 10
*/

3. Класс OptionalDouble

Класс OptionalDouble — чрезвычайно полезный и простой инструмент, который служит объектом-контейнером, содержащим или не содержащим двойное значение. Если в объекте присутствует двойник OptionalDouble, его методы можно использовать для проверки этого объекта. Другие методы, присутствующие в этом классе, позволяют сравнивать их с остальными объектами и предоставляют определенную информацию о представленном значении. В соответствии с документацией Oracle, здесь следует избегать использования операций с идентификацией (например, ==, синхронизация). Причина в том, что OptionalDouble — это value-based класс. Чтобы инициализировать объект OptionalDouble и присвоить ему значение, вы должны использовать один из его статических методов: of(). Также этот метод возвращает объект OptionalDouble с указанным значением, присутствующим в нем. Инициализировать класс без указанного значения можно, используя метод empty(). Синтаксис:

// without value; empty
OptionalDouble name = OptionalDouble.empty();
// with value
OptionalDouble name = OptionalDouble.of(double value);
Методы:
  • isPresent() — возвращает логическое значение (boolean value); true — если, в объекте OptionalDouble присутствует значение, и false в противном случае.
  • getAsDouble() — возвращает значение, присутствующее в объекте OptionalDouble. Если значение отсутствует, появляется исключение NoSuchElementException.
  • equals(object) — указывает, равен ли объект, указанный в параметрах, данному объекту OptionalDouble.
Пример:

OptionalDouble val = OptionalDouble.empty();
OptionalDouble val2 = OptionalDouble.of(15.0);

System.out.println("val2 >>");
System.out.println("A value is present: " + val2.isPresent());
System.out.println("Double contained: " + val2.getAsDouble());
System.out.println("Equal to 15: " + val2.equals(15.0));
System.out.println();System.out.println("val >>");
System.out.println("A value is present: " + val.isPresent());
System.out.println("Double contained: " + val.getAsDouble());

/*
Output:val2 >>
A value is present: true
Double contained: 15.0
Equal to 15: falseval >>
A value is present: false
NoSuchElementException
*/

4. Класс StringTokenizer

Класс StringTokenizer работает со строками. В частности, он разбивает строку на токены. Токены — это отдельные части или слова строки. Такое предложение, как “Baron of Arrakis”, может быть разбито на токены “Baron”, “of” и “Arrakis”. Поскольку класс предлагает быструю альтернативу для разделения слов в строке, он является важным инструментом при работе со строками. Класс StringTokenizer создается с помощью конструктора. В конструктор должен быть передан аргумент: строковое значение, которое нужно “токенизировать”. Второй необязательный аргумент также может быть передан для обозначения строкового или символьного значения, согласно которому программа будет разделять токены в строке. Например, если для строки “Cake , Donuts , Cream” вторым аргументом является “ , ”, то токены будут разделены знаком “ , ”, в результате чего появятся токены “Cake”, “Donuts”, и “Cream”. Третий параметр, который также является необязательным, представляет собой логическое значение (по умолчанию false), которое указывает, считаются ли значения разделителя, указанные во втором аргументе, токеном. Используя тот же предыдущий пример для второго параметра, если передается true, то токены теперь будут включать разделитель “ , ”. В итоге получаем токены: “Cake”, “ ,”, “Donuts”, “ ,”, “Cream”. Синтаксис:

StringTokenizer name = new StringTokenizer(string);
Пример:

StringTokenizer tokens = new StringTokenizer("Werdna wa xueruoma");
Чтобы получить доступ к отдельным токенам или отобразить их, вы должны использовать метод nextToken(). Просто распечатать объект StringTokenizer или сослаться на него по индексу не получится, поскольку он не является массивом. Самый простой способ получить доступ ко всем токенам объекта — это итерация, предпочтительно цикл while.

// Using the object "tokens" in the above example
// hasMoreTokens() returns a boolean as to whether the given object  
// has more tokens
while (tokens.hasMoreTokens()){
    System.out.println(tokens.nextToken());
}

/* 
Output:
Werdna
wa
xueruoma
*/
Методы: В этом классе нет уникальных методов.

5. Класс GregorianCalendar

Класс GregorianCalendar является конкретным подклассом абстрактного класса Calendar, который поддерживает как григорианскую, так и юлианскую календарную систему. Григорианский календарь — это современный календарь, используемый в большинстве стран мира, модификация юлианского календаря, введенная папой Григорием XIII. Ранее используемый Юлианский календарь был изобретен Юлием Цезарем на основе римского календаря. Чтобы создать объект GregorianCalendar, необходимо использовать конструктор. Программа предоставит календарь с текущей датой, временем и часовым поясом. Все эти значения можно настроить с помощью параметров конструктора. Синтаксис:

GregorianCalendar name = new GregorianCalendar(date/time)
Дата и время могут быть указаны в следующем формате: year, month, day of month, hour, minute, second (год, месяц, день месяца, час, минута и секунда). Обратите внимание, что этот аргумент является необязательным. Вы также можете передать часовой пояс, языковой стандарт или и то, и другое в качестве параметра в конструкторе. Методы:
  • getTime() — возвращает текущую дату и время объекта календаря. Это может быть не фактическая текущая дата и время, а та, которую вы установили в атрибутах календаря.
  • setTime() — устанавливает дату и время объекта календаря. Этот параметр принимает два параметра. Во-первых, это поле календаря, которое нужно изменить (например, если вы устанавливаете месяц, то вы должны указать этот аргумент как Calendar.MONTH). Второй аргумент — это новое измененное значение.
Пример:

// Calendar representing current time and date
GregorianCalendar g = new GregorianCalendar();
System.out.println("Original Time: " + g.getTime());// Setting the current day to the 28th
g.set(Calendar.DAY_OF_MONTH, 28);
System.out.println("Altered Time: " + g.getTime());

/* 
Output:Original Time: Mon Sep 20 18:10:11 EDT 2021
Altered Time: Tue Sep 28 18:10:11 EDT 2021
*/
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Dijinx Grim Уровень 7
16 марта 2024
Спасибо, полезно
Игорь Попович Уровень 16
24 ноября 2022
Привет. Ожидал что-то более экзотического, но если будут подобные статьи по базовым классам, то это очень интересно и полезно.