Hashmap , ArrayList, Static Map, Vector и т. Д. Являются наиболее часто используемыми элементами инфраструктуры Java- коллекции . Существует бесконечное количество сценариев, которые вы можете использовать в соответствии с вашими потребностями.
Этот пример очень интересный пример Java . Мы собираемся выполнить приведенную ниже операцию над одиночным HashMap ().
- Создать объект crunchifyMap
- Продолжайте добавлять элемент на карту каждую секунду, для которой истекло время истечения
5 seconds Checkдля просроченного элемента, как кэш каждую секунду иdelete from map if expired- Через 5 секунд вы получите
always same sizeа такжеalways 5 elementsтак как вы добавляете и удаляете просроченные элементы каждую секунду
Также, если у вас есть below questions тогда вы находитесь в правильном месте:
- Что такое пример пассивной карты с истекающим сроком действия
- Параллельная карта с тайм-аутом
- Пример Java Cache Map
- Пример Java TimerTask
- Evictor — пример параллельной карты Java
Давайте начнем:
Point-1
- Создать элемент таймера
crunchifyTimer - Планирует указанную задачу
CrunchifyReminder()для повторного выполнения с фиксированной задержкой, которое составляет 1 секунду - В запланированном задании
addэлемент в crunchifyMap- проверить просроченный элемент из crunchifyMap и удалить
Point-2
- В течение
addElement()операция- Мы общаемся
current timeдля каждого элемента
- Мы общаемся
- В течение
crunchifyClearExipredElementsFromMap()операция- Мы проверяем текущее время со временем элемента
- Если разница во времени превышает 5 секунд, просто удалите элемент из crunchifyMap
Point-3
- Во время операции добавления и удаления выведите элемент на консоль Eclipse.
- 1-й добавленный элемент будет удален 1-м и т. Д.
- Пожалуйста, проверьте вывод консоли Eclipse на результат
Вот программа на Java:
CrunchifyCleanExipredMapElements.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
пакет crunchify. ком . учебные пособия ;
Импортировать Java. Util. ArrayList ;
Импортировать Java. Util. Дата ;
Импортировать Java. Util. HashMap ;
Импортировать Java. Util. Итератор ;
Импортировать Java. Util. Карта ;
Импортировать Java. Util. Карта. Вход ;
Импортировать Java. Util. Таймер ;
Импортировать Java. Util. TimerTask ;
/ **
* @author Crunchify.com
*
* — Продолжайте добавлять элемент на карту каждую секунду с истекшим временем 5 секунд
* — Проверять просроченный элемент каждую секунду и удалять с карты, если истек
* — Через 5 секунд вы получите всегда тот же размер, что и при добавлении и удалении просроченных элементов каждую секунду
*
* /
общественности учебный класс CrunchifyCleanExipredMapElements {
Таймер crunchifyTimer ;
частный статический долго EXPIRED_TIME_IN_SEC знак равно 5л ;
частный статический Карта < Двойная , ArrayList <Дата >> crunchifyMap знак равно новый HashMap < > ( ) ;
общественности статический недействительным главная ( Строка args [ ] ) {
новый CrunchifyCleanExipredMapElements ( 1 ) ;
log ( «Начать добавление элемента каждую секунду / n / n» ) ;
}
общественности CrunchifyCleanExipredMapElements ( int секунд ) {
crunchifyTimer знак равно новый Таймер ( ) ;
crunchifyTimer . график ( новый CrunchifyReminder ( ) , 0 , секунд * 1000 ) ;
}
учебный класс CrunchifyReminder продолжается TimerTask {
общественности недействительным запустить ( ) {
// Каждую секунду мы проверяем устаревший элемент карты
crunchifyClearExipredElementsFromMap ( crunchifyMap ) ;
// Мы добавляем элемент каждую секунду
addElement ( ) ;
}
}
общественности недействительным addElement ( ) {
crunchifyAddElementToMap ( Math . random ( ) , crunchifyMap ) ;
}
// Проверка истекшего времени элемента. Если элемент> 5 секунд, то удалите его
частный статический недействительным crunchifyClearExipredElementsFromMap ( Map < Double , ArrayList <Дата >> карта ) {
Дата currentTime знак равно новый Дата ( ) ;
Date actualExpiredTime знак равно новый Дата ( ) ;
// если временная метка элемента и разница текущей метки равна 5 секундам, тогда удаляем элемент
actualExpiredTime . setTime ( currentTime . getTime ( ) — EXPIRED_TIME_IN_SEC * 1000л ) ;
Система. вне. println ( размер crunchifyMap: + карта. размер ( ) ) ;
Итератор < Entry < Double , ArrayList <Дата>>> crunchifyIterator знак равно карта. entrySet ( ) . итератор ( ) ;
в то время как ( crunchifyIterator . hasNext ( ) ) {
Вступление < Двойной , ArrayList <Дата >> запись знак равно crunchifyIterator . следующий ( ) ;
ArrayList <Дата> crunchifyElement знак равно запись. getValue ( ) ;
в то время как ( crunchifyElement . size ( ) > 0
&& crunchifyElement.get (0) .compareTo (actualExpiredTime) <0) {
log (———— Элемент удален: + entry.getKey ());
crunchifyElement . удалить ( 0 ) ;
}
если ( crunchifyElement . size ( ) == 0 ) {
crunchifyIterator . удалить ( ) ;
}
}
}
// Добавляем новый элемент на карту с текущей отметкой времени
частный статический недействительным crunchifyAddElementToMap ( Double цифра , Карта < Двойная , ArrayList <Дата >> моя карта ) {
ArrayList <Дата> crunchifyList знак равно новый ArrayList < > ( ) ;
MyMap. поставить ( цифра , crunchifyList ) ;
crunchifyList . добавить ( новый Дата ( ) ) ;
log ( +++++++++++ Элемент добавлен: + цифра + / n ) ;
}
частный статический недействительным 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
24
25
26
27
28
29
30
31
32
|
Теперь начните добавлять элемент каждую секунду
размер crunchifyMap : 0
+++++++++++ Добавленный элемент : 0.3321090256163167
размер crunchifyMap : 1
+++++++++++ Добавленный элемент : 0.29778458088827553
crunchifyMap размер : 2
+++++++++++ Добавленный элемент : 0.1650913469916243
crunchifyMap размер : 3
+++++++++++ Добавленный элемент : 0.12229083719470968
crunchifyMap размер : 4
+++++++++++ Добавленный элемент : 0.536557757275355
crunchifyMap размер : 5
———— Элемент удален : 0,3321090256163167
+++++++++++ Добавленный элемент : 0.013565449767778959
crunchifyMap размер : 5 < ===== такой же размер как мы удалялись с истекшим сроком действия элемента
———— Элемент удален : +0,29778458088827553
+++++++++++ Добавленный элемент : 0.599557897686096
crunchifyMap размер : 5
———— Элемент удален : 0,1650913469916243
+++++++++++ Добавлен элемент : 0.09771019697128791
crunchifyMap размер : 5
———— Элемент удален : +0,12229083719470968
+++++++++++ Добавленный элемент : 0.47324898477566835
|
0.00 (0%) 0 votes








