add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / src / java / org / apache / lucene / util / MapBackedSet.java
1 package org.apache.lucene.util;
2
3 /**
4  * Licensed to the Apache Software Foundation (ASF) under one or more
5  * contributor license agreements.  See the NOTICE file distributed with
6  * this work for additional information regarding copyright ownership.
7  * The ASF licenses this file to You under the Apache License, Version 2.0
8  * (the "License"); you may not use this file except in compliance with
9  * the License.  You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 import java.io.Serializable;
21 import java.util.AbstractSet;
22 import java.util.Iterator;
23 import java.util.Map;
24
25 /**
26  * A Set implementation that wraps an actual Map based
27  * implementation.
28  * 
29  * @lucene.internal
30  */
31 public final class MapBackedSet<E> extends AbstractSet<E> implements Serializable {
32
33   private static final long serialVersionUID = -6761513279741915432L;
34
35   private final Map<E, Boolean> map;
36
37   /**
38    * Creates a new instance which wraps the specified {@code map}.
39    */
40   public MapBackedSet(Map<E, Boolean> map) {
41     this.map = map;
42   }
43
44   @Override
45   public int size() {
46     return map.size();
47   }
48
49   @Override
50   public boolean contains(Object o) {
51     return map.containsKey(o);
52   }
53
54   @Override
55   public boolean add(E o) {
56     return map.put(o, Boolean.TRUE) == null;
57   }
58
59   @Override
60   public boolean remove(Object o) {
61     return map.remove(o) != null;
62   }
63
64   @Override
65   public void clear() {
66     map.clear();
67   }
68
69   @Override
70   public Iterator<E> iterator() {
71     return map.keySet().iterator();
72   }
73 }