Содержание
Java без Java Collection действительно сложно представить. Я трачу почти пару часов в день, работая над проектами Java для моих клиентов.
HashMap , Map, Static Objects , Java Interface — наиболее часто используемые термины.
Некоторое время назад я написал статью о том, как автоматически удалять элементы из HashMap, используя Java Timer и Futures Object?
В этом уроке мы рассмотрим аналогичную концепцию, но не с использованием таймера, а ExpiringMap
Java — Карта с автоматически истекающими элементами
Давайте начнем:
Шаг 1.
Создать класс Java CrunchifyNetJodahExpiringMapExample .Джава.
Шаг 2.
Добавить Maven net.jodah.expiringmap Зависимость
Если ты не видишь pom.xml файл в среду Eclipse, а затем выполните следующие действия .
|
1
2
3
4
5
|
< зависимость >
< groupId > net . Джода < / groupId >
< artifactId > expiringmap < / artifactId >
< версия > 0.5.7 < / версия >
< / зависимость >
|
Шаг 3
Создать объект curnchifyMap со сроком действия, установленным на 5 seconds ,
Шаг 4
- Добавить элемент в
crunchifyMapкаждую секунду - Мы также напечатаем номер элемента для этой карты, используя
size()метод
Шаг 5
Как вы увидите в выводе, в течение 5 секунд не будет более 5 элементов. crunchifyMap ,
Полный пример Java:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
пакет crunchify. ком . учебник ;
Импортировать Java. Util. Карта ;
Импортировать Java. Util. одновременно. TimeUnit ;
Импортировать нетто. Джода . expiringmap . ExpiringMap ;
/ **
* @author Crunchify.com
*
* — ExpiringMap — это высокопроизводительная поточно-ориентированная реализация ConcurrentMap, срок действия которой истекает.
* — В идеале не должно быть проблем с производительностью без какой-либо внешней зависимости
*
* /
общественности учебный класс CrunchifyNetJodahExpiringMapExample {
// Создать карту Exipring с именем crunchifyMap со сроком действия 5 секунд
частный статический Карта < Строка , Двухместный > crunchifyMap знак равно ExpiringMap . строитель ( ) . истечение срока ( 5 , TimeUnit . СЕКУНД ) . build ( ) ;
общественности статический недействительным main ( Строка [ ] аргументы ) {
{
// Давайте продолжим цикл для тестирования
в то время как ( правда ) {
пытаться {
// Просто подожди секунду
Thread. сон ( 1000 ) ;
} ловить ( InterruptedException е ) {
эл . printStackTrace ( ) ;
}
// Добавить элемент на карту crunchifyMap
addElement ( ) ;
// Распечатать элемент на карту crunchifyMap
printElement ( ) ;
}
}
}
частный статический недействительным printElement ( ) {
log ( CrunchifyMap Size: + crunchifyMap . размер ( ) + / n ) ;
}
// ПРИМЕЧАНИЕ: мы добавляем уникальный элемент на карту каждый раз.
частный статический недействительным addElement ( ) {
двойной randomValue знак равно Математика случайный ( ) ;
// Если указанный ключ еще не связан со значением (или сопоставлен со значением NULL), ассоциирует его с
// данное значение и возвращает ноль, иначе возвращает текущее значение.
crunchifyMap . putIfAbsent ( Хруст + randomValue , randomValue ) ;
log ( +++++ Элемент добавлен в crunchifyMap: + randomValue ) ;
}
частный статический недействительным log ( Строка строка ) {
Система. вне. println ( строка ) ;
}
}
|
Консольный вывод:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
+++++ Элемент добавлен в crunchifyMap : 0.217495756642075
размер crunchifyMap : 1
+++++ Элемент добавлен в crunchifyMap : 0.3848009195646136
размер crunchifyMap : 2
+++++ Элемент добавлен в crunchifyMap : 0.7844845177791825
размер crunchifyMap : 3
+++++ Элемент добавлен в crunchifyMap : 0.19386945925964516
размер crunchifyMap : 4
+++++ Элемент добавлен в crunchifyMap : 0.7279066292650116
размер crunchifyMap : 5
+++++ Элемент добавлен в crunchifyMap : 0.6664624769347492
размер crunchifyMap : 5 < ========== проверьте это : размер карты установлен на 5 как элемент истекает каждый 1 секунд тоже
+++++ Элемент добавлен в crunchifyMap : 0.8867273405922911
размер crunchifyMap : 5
+++++ Элемент добавлен в crunchifyMap : 0.06620783012520237
размер crunchifyMap : 5
|
0.00 (0%) 0 votes









