Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2009 The Guava Authors
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package java.util.concurrent;
 
 import java.util.Map;
 import java.util.Set;

Minimal emulation of ConcurrentHashMap. Note that javascript intepreter is single-threaded, it is essentially a java.util.HashMap, implementing the new methods introduced by ConcurrentMap.

Author(s):
Hayward Chan
 
 public class ConcurrentHashMap<K, V>
     extends AbstractMap<K, V> implements ConcurrentMap<K, V> {
 
   private final Map<K, V> backingMap;
 
   public ConcurrentHashMap() {
     this. = new HashMap<K, V>();
   }
 
   public ConcurrentHashMap(int initialCapacity) {
     this. = new HashMap<K, V>(initialCapacity);
   }
 
   public ConcurrentHashMap(int initialCapacityfloat loadFactor) {
     this. = new HashMap<K, V>(initialCapacityloadFactor);
   }
 
   public ConcurrentHashMap(Map<? extends K, ? extends V> t) {
     this. = new HashMap<K, V>(t);
   }
 
   public V putIfAbsent(K key, V value) {
     if (!containsKey(key)) {
       return put(keyvalue);
     } else {
       return get(key);
     }
   }
 
   public boolean remove(Object keyObject value) {
     if (containsKey(key) && get(key).equals(value)) {
       remove(key);
       return true;
     } else {
       return false;
     }
   }
 
   public boolean replace(K key, V oldValue, V newValue) {
     if (oldValue == null || newValue == null) {
       throw new NullPointerException();
     } else if (containsKey(key) && get(key).equals(oldValue)) {
       put(keynewValue);
       return true;
     } else {
       return false;
     }
   }
 
   public V replace(K key, V value) {
     if (value == null) {
       throw new NullPointerException();
     } else if (containsKey(key)) {
       return put(keyvalue);
     } else {
       return null;
     }
   }
 
   @Override public boolean containsKey(Object key) {
     if (key == null) {
       throw new NullPointerException();
     }
     return .containsKey(key);
   }
  @Override public V get(Object key) {
    if (key == null) {
      throw new NullPointerException();
    }
    return .get(key);
  }
  @Override public V put(K key, V value) {
    if (key == null || value == null) {
      throw new NullPointerException();
    }
    return .put(keyvalue);
  }
  @Override public boolean containsValue(Object value) {
    if (value == null) {
      throw new NullPointerException();
    }
    return .containsValue(value);
  }
  @Override public V remove(Object key) {
    if (key == null) {
      throw new NullPointerException();
    }
    return .remove(key);
  }
  @Override public Set<Entry<K, V>> entrySet() {
    return .entrySet();
  }
  public boolean contains(Object value) {
    return containsValue(value);
  }
  public Enumeration<V> elements() {
    return Collections.enumeration(values());
  }
  public Enumeration<K> keys() {
    return Collections.enumeration(keySet());
  }
New to GrepCode? Check out our FAQ X