Javolution 6.0.0 java
FastMap.java
Go to the documentation of this file.
1
/*
2
* Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3
* Copyright (C) 2012 - Javolution (http://javolution.org/)
4
* All rights reserved.
5
*
6
* Permission to use, copy, modify, and distribute this software is
7
* freely granted, provided that this notice is preserved.
8
*/
9
package
javolution.util;
10
11
import
static
javolution
.
lang
.
Realtime
.
Limit
.
CONSTANT
;
12
import
static
javolution
.
lang
.
Realtime
.
Limit
.
LINEAR
;
13
14
import
java.io.Serializable;
15
import
java.util.ConcurrentModificationException;
16
import
java.util.Map;
17
import
java.util.concurrent.ConcurrentMap;
18
19
import
javolution
.
lang
.
Immutable
;
20
import
javolution
.
lang
.
Parallelizable
;
21
import
javolution
.
lang
.
Realtime
;
22
import
javolution
.
text
.
TextContext
;
23
import
javolution
.
util
.
function
.
Consumer
;
24
import
javolution
.
util
.
function
.
Equalities
;
25
import
javolution
.
util
.
function
.
Equality
;
26
import
javolution
.
util
.
internal
.
map
.
AtomicMapImpl
;
27
import
javolution
.
util
.
internal
.
map
.
FastMapImpl
;
28
import
javolution
.
util
.
internal
.
map
.
ParallelMapImpl
;
29
import
javolution
.
util
.
internal
.
map
.
SequentialMapImpl
;
30
import
javolution
.
util
.
internal
.
map
.
SharedMapImpl
;
31
import
javolution
.
util
.
internal
.
map
.
UnmodifiableMapImpl
;
32
import
javolution
.
util
.
service
.
CollectionService
;
33
import
javolution
.
util
.
service
.
MapService
;
34
96
@Realtime
97
public
class
FastMap
<K, V>
implements
Map<K, V>, ConcurrentMap<K, V>,
98
Serializable {
99
100
private
static
final
long
serialVersionUID
= 0x600L;
// Version.
101
105
private
final
MapService<K, V>
service
;
106
110
public
FastMap
() {
111
this
(
Equalities
.
STANDARD
);
112
}
113
118
public
FastMap
(
Equality<? super K>
keyEquality) {
119
this
(keyEquality,
Equalities
.
STANDARD
);
120
}
121
126
public
FastMap
(
Equality<? super K>
keyEquality,
127
Equality<? super V>
valueEquality) {
128
service
=
new
FastMapImpl<K, V>
(keyEquality, valueEquality);
129
}
130
134
protected
FastMap
(
MapService<K, V>
service
) {
135
this.service =
service
;
136
}
137
139
// Views.
140
//
141
149
@
Parallelizable
(mutexFree =
true
, comment =
"Except for write operations, all read operations are mutex-free."
)
150
public
FastMap
<K, V>
atomic
() {
151
return
new
FastMap<K, V>
(
new
AtomicMapImpl<K, V>
(
service
));
152
}
153
163
@
Parallelizable
(mutexFree =
false
, comment =
"Use multiple-readers/single-writer lock."
)
164
public
FastMap
<K, V>
shared
() {
165
return
new
FastMap<K, V>
(
new
SharedMapImpl<K, V>
(
service
));
166
}
167
178
public
FastMap<K, V>
parallel
() {
179
return
new
FastMap<K, V>
(
new
ParallelMapImpl<K, V>
(
service
));
180
}
181
186
public
FastMap<K, V>
sequential
() {
187
return
new
FastMap<K, V>
(
new
SequentialMapImpl<K, V>
(
service
));
188
}
189
195
public
FastMap<K, V>
unmodifiable
() {
196
return
new
FastMap<K, V>
(
new
UnmodifiableMapImpl<K, V>
(
service
));
197
}
198
206
public
FastSet<K>
keySet
() {
207
return
new
FastSet<K>
(
service
.keySet());
208
}
209
216
public
FastCollection<V>
values
() {
217
return
new
FastCollection<V>
() {
218
private
static
final
long
serialVersionUID
= 0x600L;
// Version.
219
private
final
CollectionService<V>
serviceValues =
service
.values();
220
221
@Override
222
protected
CollectionService<V>
service
() {
223
return
serviceValues;
224
}
225
};
226
}
227
236
public
FastSet<Entry<K, V>
>
entrySet
() {
237
return
new
FastSet<Entry<K, V>
>(
service
.entrySet());
238
}
239
241
// Closures operations.
242
//
243
256
@
Realtime
(limit = LINEAR)
257
@SuppressWarnings(
"unchecked"
)
258
public
void
perform
(
Consumer
<? extends Map<K, V>> action) {
259
service
().perform((
Consumer
<
MapService<K, V>
>) action,
service
());
260
}
261
274
@
Realtime
(limit = LINEAR)
275
@SuppressWarnings(
"unchecked"
)
276
public
void
update
(
Consumer
<? extends Map<K, V>> action) {
277
service
().update((
Consumer
<
MapService<K, V>
>) action,
service
());
278
}
279
281
// Map Interface.
282
//
283
285
@Override
286
@
Realtime
(limit = CONSTANT)
287
public
int
size
() {
288
return
service
.size();
289
}
290
292
@Override
293
@
Realtime
(limit = CONSTANT)
294
public
boolean
isEmpty
() {
295
return
service
.isEmpty();
296
}
297
299
@Override
300
@
Realtime
(limit = CONSTANT)
301
public
boolean
containsKey
(Object key) {
302
return
service
.containsKey(key);
303
}
304
306
@Override
307
@
Realtime
(limit = LINEAR)
308
public
boolean
containsValue
(Object value) {
309
return
service
.containsValue(value);
310
}
311
313
@Override
314
@
Realtime
(limit = CONSTANT)
315
public V
get
(Object key) {
316
return
service
.get(key);
317
}
318
320
@Override
321
@
Realtime
(limit = CONSTANT)
322
public V
put
(K key, V value) {
323
return
service
.put(key, value);
324
}
325
327
@Override
328
@
Realtime
(limit = LINEAR)
329
public
void
putAll
(Map<? extends K, ? extends V> map) {
330
service
.putAll(map);
331
}
332
334
@Override
335
@
Realtime
(limit = CONSTANT)
336
public V
remove
(Object key) {
337
return
service
.remove(key);
338
}
339
341
@Override
342
@
Realtime
(limit = CONSTANT)
343
public
void
clear
() {
344
service
.clear();
345
}
346
348
// ConcurrentMap Interface.
349
//
350
353
@Override
354
@
Realtime
(limit = CONSTANT)
355
public V
putIfAbsent
(K key, V value) {
356
return
service
.putIfAbsent(key, value);
357
}
358
360
@Override
361
@
Realtime
(limit = CONSTANT)
362
public
boolean
remove
(Object key, Object value) {
363
return
service
.remove(key, value);
364
}
365
367
@Override
368
@
Realtime
(limit = CONSTANT)
369
public
boolean
replace
(K key, V oldValue, V newValue) {
370
return
service
.replace(key, oldValue, newValue);
371
}
372
374
@Override
375
@
Realtime
(limit = CONSTANT)
376
public V
replace
(K key, V value) {
377
return
service
.replace(key, value);
378
}
379
381
// Misc.
382
//
383
387
public
FastMap<K, V>
putAll
(
FastMap<? extends K, ? extends V>
that) {
388
putAll
((Map<? extends K, ? extends V>) that);
389
return
this
;
390
}
391
398
public <T extends Map<K, V>>
Immutable<T>
toImmutable
() {
399
return
new
Immutable<T>
() {
400
@SuppressWarnings(
"unchecked"
)
401
final
T value = (T)
unmodifiable
();
402
403
@Override
404
public
T value() {
405
return
value;
406
}
407
};
408
}
409
411
@Override
412
@
Realtime
(limit = LINEAR)
413
public String
toString
() {
414
return
TextContext
.
getFormat
(
FastCollection
.class).format(
entrySet
());
415
}
416
420
protected
MapService<K, V>
service
() {
421
return
service
;
422
}
423
424
}
javolution.text.TextContext.getFormat
static< T > TextFormat< T > getFormat(Class<? extends T > type)
Definition:
TextContext.java:69
javolution.util.FastMap.sequential
FastMap< K, V > sequential()
Definition:
FastMap.java:186
javolution.util.function.Equalities.STANDARD
static final Equality< Object > STANDARD
Definition:
Equalities.java:31
javolution.lang.Parallelizable
Definition:
Parallelizable.java:55
javolution.util.internal.map.SequentialMapImpl
Definition:
SequentialMapImpl.java:20
javolution
javolution.util.internal
javolution.util.FastMap.service
MapService< K, V > service()
Definition:
FastMap.java:420
javolution.util.internal.map.SharedMapImpl
Definition:
SharedMapImpl.java:21
javolution.util.service
Definition:
BitSetService.java:9
javolution.lang.Realtime.Limit
Definition:
Realtime.java:81
javolution.util.FastMap
Definition:
FastMap.java:98
javolution.util.FastMap.FastMap
FastMap(MapService< K, V > service)
Definition:
FastMap.java:134
javolution.util.FastMap.containsValue
boolean containsValue(Object value)
Definition:
FastMap.java:308
javolution.util.FastMap.put
V put(K key, V value)
Definition:
FastMap.java:322
javolution.util.FastMap.perform
void perform(Consumer<? extends Map< K, V >> action)
Definition:
FastMap.java:258
javolution.util.FastMap.values
FastCollection< V > values()
Definition:
FastMap.java:216
javolution.util.FastMap.isEmpty
boolean isEmpty()
Definition:
FastMap.java:294
javolution.util.FastMap.shared
FastMap< K, V > shared()
Definition:
FastMap.java:164
javolution.util.function.Consumer
Definition:
Consumer.java:22
javolution.util.service.MapService
Definition:
MapService.java:27
javolution.util.FastMap.FastMap
FastMap()
Definition:
FastMap.java:110
javolution.util.internal.map.UnmodifiableMapImpl
Definition:
UnmodifiableMapImpl.java:19
javolution.util.internal.map.AtomicMapImpl
Definition:
AtomicMapImpl.java:21
javolution.util.FastMap.putAll
void putAll(Map<? extends K, ? extends V > map)
Definition:
FastMap.java:329
javolution.util.service.CollectionService
Definition:
CollectionService.java:25
javolution.util.FastMap.keySet
FastSet< K > keySet()
Definition:
FastMap.java:206
javolution.util.FastMap.FastMap
FastMap(Equality<? super K > keyEquality)
Definition:
FastMap.java:118
javolution.util.function.Equality
Definition:
Equality.java:39
javolution.lang
Definition:
Configurable.java:9
javolution.util.function.Equalities
Definition:
Equalities.java:20
javolution.util.FastMap.clear
void clear()
Definition:
FastMap.java:343
javolution.util.FastMap.parallel
FastMap< K, V > parallel()
Definition:
FastMap.java:178
javolution.text
Definition:
CharArray.java:9
javolution.util.FastMap.putIfAbsent
V putIfAbsent(K key, V value)
Definition:
FastMap.java:355
javolution.util.FastMap.toString
String toString()
Definition:
FastMap.java:413
javolution.util.FastMap.size
int size()
Definition:
FastMap.java:287
javolution.util.FastMap.entrySet
FastSet< Entry< K, V > > entrySet()
Definition:
FastMap.java:236
javolution.util.function
Definition:
Consumer.java:9
javolution.lang.Realtime.Limit.LINEAR
LINEAR
Definition:
Realtime.java:98
javolution.lang.Realtime.Limit.CONSTANT
CONSTANT
Definition:
Realtime.java:86
javolution.util.FastMap.atomic
FastMap< K, V > atomic()
Definition:
FastMap.java:150
javolution.util.FastMap.serialVersionUID
static final long serialVersionUID
Definition:
FastMap.java:100
javolution.lang.Realtime
Definition:
Realtime.java:59
javolution.util.FastMap.remove
V remove(Object key)
Definition:
FastMap.java:336
javolution.util.FastMap.update
void update(Consumer<? extends Map< K, V >> action)
Definition:
FastMap.java:276
javolution.util.FastMap.get
V get(Object key)
Definition:
FastMap.java:315
javolution.util.FastCollection
Definition:
FastCollection.java:166
javolution.util.FastMap.putAll
FastMap< K, V > putAll(FastMap<? extends K, ? extends V > that)
Definition:
FastMap.java:387
javolution.util.internal.map.ParallelMapImpl
Definition:
ParallelMapImpl.java:21
javolution.util.FastMap.service
final MapService< K, V > service
Definition:
FastMap.java:105
javolution.util.FastMap.containsKey
boolean containsKey(Object key)
Definition:
FastMap.java:301
javolution.lang.Immutable
Definition:
Immutable.java:38
javolution.util.FastMap.unmodifiable
FastMap< K, V > unmodifiable()
Definition:
FastMap.java:195
javolution.util.FastMap.FastMap
FastMap(Equality<? super K > keyEquality, Equality<? super V > valueEquality)
Definition:
FastMap.java:126
javolution.util.internal.map.FastMapImpl
Definition:
FastMapImpl.java:23
javolution.util.FastMap.toImmutable
public< T extends Map< K, V > > Immutable< T > toImmutable()
Definition:
FastMap.java:398
javolution.util.FastSet
Definition:
FastSet.java:37
javolution.util
Definition:
FastBitSet.java:9
javolution.util.internal.map
Definition:
AtomicMapImpl.java:9
javolution.text.TextContext
Definition:
TextContext.java:49
javolution.util.FastMap.replace
boolean replace(K key, V oldValue, V newValue)
Definition:
FastMap.java:369
core-java
src
main
java
javolution
util
FastMap.java
Generated by
1.8.18