diff --git a/src/main/java/org/apache/commons/collections4/bidimap/AbstractDualBidiMap.java b/src/main/java/org/apache/commons/collections4/bidimap/AbstractDualBidiMap.java
index 62afd91ff..8a2a157a7 100644
--- a/src/main/java/org/apache/commons/collections4/bidimap/AbstractDualBidiMap.java
+++ b/src/main/java/org/apache/commons/collections4/bidimap/AbstractDualBidiMap.java
@@ -697,6 +697,7 @@ public abstract class AbstractDualBidiMap
* * @return a map iterator */ diff --git a/src/main/java/org/apache/commons/collections4/map/StaticBucketMap.java b/src/main/java/org/apache/commons/collections4/map/StaticBucketMap.java index d0ca28e67..441436f86 100644 --- a/src/main/java/org/apache/commons/collections4/map/StaticBucketMap.java +++ b/src/main/java/org/apache/commons/collections4/map/StaticBucketMap.java @@ -31,7 +31,9 @@ import org.apache.commons.collections4.KeyValue; /** * A StaticBucketMap is an efficient, thread-safe implementation of * {@link java.util.Map} that performs well in a highly - * thread-contentious environment. The map supports very efficient + * thread-contentious environment. + *
+ * The map supports very efficient * {@link #get(Object) get}, {@link #put(Object,Object) put}, * {@link #remove(Object) remove} and {@link #containsKey(Object) containsKey} * operations, assuming (approximate) uniform hashing and @@ -39,8 +41,9 @@ import org.apache.commons.collections4.KeyValue; * number of entries exceeds the number of buckets or if the hash codes of the * objects are not uniformly distributed, these operations have a worst case * scenario that is proportional to the number of elements in the map - * (O(n)).
- * + * (O(n)). + *
+ ** Each bucket in the hash table has its own monitor, so two threads can * safely operate on the map at the same time, often without incurring any * monitor contention. This means that you don't have to wrap instances @@ -51,6 +54,7 @@ import org.apache.commons.collections4.KeyValue; * {@link Collection#retainAll(Collection) retainAll} operation in collection * views, are not atomic. If two threads are simultaneously * executing + *
* ** staticBucketMapInstance.putAll(map); @@ -62,34 +66,41 @@ import org.apache.commons.collections4.KeyValue; * staticBucketMapInstance.entrySet().removeAll(map.entrySet()); ** + *
* then the results are generally random. Those two statement could cancel * each other out, leaving {@code staticBucketMapInstance} essentially * unchanged, or they could leave some random subset of {@code map} in - * {@code staticBucketMapInstance}.
- * + * {@code staticBucketMapInstance}. + *
+ ** Also, much like an encyclopedia, the results of {@link #size()} and - * {@link #isEmpty()} are out-of-date as soon as they are produced.
- * + * {@link #isEmpty()} are out-of-date as soon as they are produced. + *
+ ** The iterators returned by the collection views of this class are not * fail-fast. They will never raise a * {@link java.util.ConcurrentModificationException}. Keys and values * added to the map after the iterator is created do not necessarily appear * during iteration. Similarly, the iterator does not necessarily fail to - * return keys and values that were removed after the iterator was created.
- * + * return keys and values that were removed after the iterator was created. + *
+ ** Finally, unlike {@link java.util.HashMap}-style implementations, this * class never rehashes the map. The number of buckets is fixed * at construction time and never altered. Performance may degrade if - * you do not allocate enough buckets upfront.
- * + * you do not allocate enough buckets upfront. + *
+ ** The {@link #atomic(Runnable)} method is provided to allow atomic iterations * and bulk operations; however, overuse of {@link #atomic(Runnable) atomic} * will basically result in a map that's slower than an ordinary synchronized * {@link java.util.HashMap}. - * + *
+ ** Use this class if you do not require reliable bulk operations and * iterations, or if you can make your own guarantees about how bulk - * operations will affect the map.
+ * operations will affect the map. + *
* * @param