Перейти к основному содержимому

169 записей с тегом "Java Коллекции"

Посмотреть все теги

· 4 мин. чтения

1. Обзор

В этой быстрой статье мы рассмотрим класс ConcurrentSkipListMap из пакета java.util.concurrent .

Эта конструкция позволяет нам создавать потокобезопасную логику без блокировок. Это идеально для проблем, когда мы хотим сделать неизменяемый снимок данных, пока другие потоки все еще вставляют данные в карту.

С помощью этой конструкции мы будем решать задачу сортировки потока событий и получения моментального снимка событий, произошедших за последние 60 секунд .

2. Логика потоковой сортировки

· 9 мин. чтения

1. Обзор

Карты , естественно, являются одним из самых распространенных стилей коллекции Java.

И, что важно, HashMap не является потокобезопасной реализацией, в то время как Hashtable обеспечивает потокобезопасность за счет синхронизации операций.

Несмотря на то, что Hashtable является потокобезопасным, он не очень эффективен. Другая полностью синхронизированная карта, Collections.synchronizedMap, также не демонстрирует высокой эффективности. Если мы хотим потокобезопасности с высокой пропускной способностью при высоком уровне параллелизма, эти реализации не подходят.

Чтобы решить эту проблему, Java Collections Framework представила ConcurrentMap в Java 1.5 .

Следующие обсуждения основаны на Java 1.8 .

· 5 мин. чтения

1. Обзор

Каркас коллекций является ключевым компонентом Java. Он предоставляет большое количество интерфейсов и реализаций, что позволяет нам создавать различные типы коллекций и управлять ими простым способом.

Хотя использование простых несинхронизированных коллекций в целом просто, оно также может стать сложным и подверженным ошибкам процессом при работе в многопоточных средах (так называемое параллельное программирование).

Таким образом, платформа Java обеспечивает мощную поддержку этого сценария с помощью различных оболочек синхронизации , реализованных в классе Collections .

Эти оболочки упрощают создание синхронизированных представлений предоставленных коллекций с помощью нескольких статических фабричных методов.

В этом руководстве мы подробно рассмотрим эти оболочки статической синхронизации. Кроме того, мы подчеркнем разницу между синхронизированными коллекциями и параллельными коллекциями .

· 4 мин. чтения

1. Обзор

В этом руководстве мы обсудим различия между Collections.synchronizedMap() и ConcurrentHashMap .

Кроме того, мы рассмотрим результаты производительности операций чтения и записи для каждого из них.

2. Различия

Collections.synchronizedMap() и ConcurrentHashMap обеспечивают потокобезопасные операции с коллекциями данных.

· 2 мин. чтения

1. Обзор

Этот учебник представляет собой краткое введение в то, как найти минимальное и максимальное значения из заданного списка или коллекции с помощью мощного Stream API в Java 8.

2. Найдите Макса в списке целых чисел

Мы можем использовать метод max() , предоставляемый через интерфейс java.util.Stream , который принимает ссылку на метод:

@Test
public void whenListIsOfIntegerThenMaxCanBeDoneUsingIntegerComparator() {
// given
List<Integer> listOfIntegers = Arrays.asList(1, 2, 3, 4, 56, 7, 89, 10);
Integer expectedResult = 89;

// then
Integer max = listOfIntegers
.stream()
.mapToInt(v -> v)
.max().orElseThrow(NoSuchElementException::new);

assertEquals("Should be 89", expectedResult, max);
}

· 5 мин. чтения

1. Обзор

В этой статье мы узнаем, как HashMap внутренне управляет парами ключ-значение и как писать собственные реализации ключей.

2. Управление ключами

2.1. Внутренняя структура

· 5 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим, как работать с вложенными HashMaps в Java. Мы также увидим, как создавать и сравнивать их. Наконец, мы также увидим, как удалять и добавлять записи на внутренние карты.

2. Варианты использования

Вложенный HashMap очень полезен для хранения JSON или JSON-подобных структур, в которых объекты встроены друг в друга. Например, структура или JSON, похожие на:

{
"type": "donut",
"batters":
{
“batter”:
[
{ "id": "1001", "type": "Regular" },
{ "id": "1002", "type": "Chocolate" },
{ "id": "1003", "type": "Blueberry" },
{ "id": "1004", "type": "Devil's Food" }
]
}
}

· 5 мин. чтения

1. Введение

Многие разработчики решают хранить параметры приложения вне исходного кода. Один из способов сделать это в Java — использовать внешний файл конфигурации и читать его через класс java.util.Properties .

В этом руководстве мы сосредоточимся на различных подходах к преобразованию java.util.Properties в HashMap<String, String> . Мы будем реализовывать различные методы для достижения нашей цели, используя обычную Java, lambdas или внешние библиотеки. На примерах мы обсудим плюсы и минусы каждого решения.

2. Конструктор HashMap

Прежде чем мы реализуем наш первый код, давайте проверим Javadoc для java.util.Properties . Как мы видим, этот служебный класс наследуется от Hashtable<Object, Object> , который также реализует интерфейс Map . Более того, Java оборачивает свои классы Reader и Writer для работы непосредственно со строковыми значениями.

· 6 мин. чтения

1. Обзор

Java 8 Stream API предлагает эффективную альтернативу коллекциям Java для рендеринга или обработки результирующего набора. Тем не менее, это обычная дилемма, чтобы решить, какой из них использовать, когда.

В этой статье мы рассмотрим Stream и Collection и обсудим различные сценарии, соответствующие их применению.

2. Коллекция против потока

Коллекции Java предлагают эффективные механизмы для хранения и обработки данных, предоставляя такие структуры данных, как List , Set и Map .

· 2 мин. чтения

1. Обзор

В нашем предыдущем руководстве A Guide to Java HashMap мы показали, как использовать HashMap в Java.

В этом коротком руководстве мы узнаем , как получить подкарту из HashMap на основе списка ключей.

2. Используйте поток Java 8

Например, предположим, что у нас есть HashMap и список ключей: