package com.levelup.java.guava;
import static org.junit.Assert.assertNotNull;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.log4j.Logger;
import org.junit.Test;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
/**
* BiMap allows you have a set of entries that you can easily inverse the keys/values
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/guava-bimap-example/'>Guava BiMap Example</a>
*/
public class BiMapExample {
private static final Logger logger = Logger.getLogger(BiMapExample.class);
@Test
public void bidirectional_map_with_guava () {
BiMap<String, String> dialectConverterForWisconsinites =
HashBiMap.create();
dialectConverterForWisconsinites.put("bratwurst", "brat");
dialectConverterForWisconsinites.put("drinking fountain", "bubbler");
dialectConverterForWisconsinites.put("that", "dat");
dialectConverterForWisconsinites.put("alright", "iet");
dialectConverterForWisconsinites.put("soda", "pop");
BiMap<String, String> dialectConverterForEveryoneElse = dialectConverterForWisconsinites.inverse();
logger.info(dialectConverterForEveryoneElse);
assertNotNull(dialectConverterForEveryoneElse.get("brat"));
}
@Test
public void bidirectional_map_with_java () {
Map<String,String> dialectConverterForWisconsinites = new HashMap<String,String>();
dialectConverterForWisconsinites.put("bratwurst", "brat");
dialectConverterForWisconsinites.put("drinking fountain", "bubbler");
dialectConverterForWisconsinites.put("that", "dat");
dialectConverterForWisconsinites.put("alright", "iet");
dialectConverterForWisconsinites.put("soda", "pop");
Map<String,String> dialectConverterForEveryoneElse = new HashMap<String,String>();
for (Entry<String,String> entry: dialectConverterForWisconsinites.entrySet()) {
dialectConverterForEveryoneElse.put(entry.getValue(), entry.getKey());
}
logger.info(dialectConverterForEveryoneElse);
assertNotNull(dialectConverterForEveryoneElse.get("brat"));
}
}