001/* 002 * JPPF. 003 * Copyright (C) 2005-2018 JPPF Team. 004 * http://www.jppf.org 005 * 006 * Licensed under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019package org.jppf.utils.collections; 020 021import java.util.*; 022 023/** 024 * An identity map whose values are sets of a specified component type. 025 * This means the <code>containsKey()</code> method will use <code>==</code> instead of <code>equals()</code>. 026 * @param <K> the type of the keys in this map. 027 * @param <V> the type of values in each Set mapped to a key. 028 * @author Laurent Cohen 029 */ 030public class SetIdentityMap<K, V> extends AbstractCollectionMap<K, V> { 031 /** 032 * Explicit serialVersionUID. 033 */ 034 private static final long serialVersionUID = 1L; 035 036 /** 037 * Default constructor. 038 */ 039 public SetIdentityMap() { 040 map = createMap(); 041 } 042 043 @Override 044 protected Map<K, Collection<V>> createMap() { 045 return new IdentityHashMap<>(); 046 } 047 048 @Override 049 protected Collection<V> newCollection() { 050 return new HashSet<>(); 051 } 052}