| /* |
| * Copyright (c) 2009, 2011, 2012, 2015 Eike Stepper (Berlin, Germany) and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Eike Stepper - initial API and implementation |
| */ |
| package org.eclipse.net4j.util.collection; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| /** |
| * @since 2.0 |
| * @author Eike Stepper |
| */ |
| public class BidiMapper<T1, T2> |
| { |
| private Map<T1, T2> map1 = new HashMap<T1, T2>(); |
| |
| private Map<T2, T1> map2 = new HashMap<T2, T1>(); |
| |
| public BidiMapper() |
| { |
| } |
| |
| public synchronized void map(T1 v1, T2 v2) |
| { |
| map1.put(v1, v2); |
| map2.put(v2, v1); |
| } |
| |
| public synchronized int size() |
| { |
| return map1.size(); |
| } |
| |
| public synchronized void clear() |
| { |
| map1.clear(); |
| map2.clear(); |
| } |
| |
| public synchronized T2 lookup1(T1 v1) |
| { |
| return map1.get(v1); |
| } |
| |
| public synchronized T1 lookup2(T2 v2) |
| { |
| return map2.get(v2); |
| } |
| |
| public synchronized boolean remove1(T1 v1) |
| { |
| T2 v2 = map1.remove(v1); |
| if (v2 != null) |
| { |
| map2.remove(v2); |
| return true; |
| } |
| |
| return false; |
| } |
| |
| public synchronized boolean remove2(T2 v2) |
| { |
| T1 v1 = map2.remove(v2); |
| if (v1 != null) |
| { |
| map1.remove(v1); |
| return true; |
| } |
| |
| return false; |
| } |
| } |