Here you can find the source of remove(K key, ConcurrentMap
public static <K> int remove(K key, ConcurrentMap<K, Object[]> map, Object value)
//package com.java2s; /*//from w ww . jav a2 s. co m * Copyright 2009 zaichu xiao * * 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. */ import java.util.concurrent.ConcurrentMap; public class Main { /** * @return if entry removed return 0. if replace old entry return 1, if * value not exist return -1; * */ public static <K> int remove(K key, ConcurrentMap<K, Object[]> map, Object value) { outer: for (;;) { Object[] elements = map.get(key); if (elements != null) { int i, len = i = elements.length; while (--i >= 0) { if (value.equals(elements[i])) { if (--len > 0) { Object[] newElements = new Object[len]; while (--len >= i) newElements[len] = elements[len + 1]; while (--i >= 0) newElements[i] = elements[i]; if (map.replace(key, elements, newElements)) return 1; } else if (map.remove(key, elements)) return 0; continue outer; } } } return -1; } } }