Домой Учебники по Java и J2EE Как удалить просроченные элементы из HashMap и добавить больше элементов одновременно —...

Как удалить просроченные элементы из HashMap и добавить больше элементов одновременно — Java Timer, TimerTask и futures () — полный пример

762
0

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 знак равно ;
частный статический Карта < Двойная , 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
Как удалить просроченные элементы из HashMap и добавить больше элементов одновременно — Java Timer, TimerTask и futures () — полный пример

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  Каковы различные способы создания объекта в Java? Всего 6 способов - полный урок

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь