1. Maven Dependency
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.fool.guava</groupId> <artifactId>guava</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>guava</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> </project>
2.Book.java
package org.fool.guava.collections.map;
import java.util.Date;
import com.google.common.base.MoreObjects;
public class Book {
private String isbn;
private String name;
private String author;
private Date publishDate;
public Book(String isbn, String name, String author, Date publishDate) {
this.isbn = isbn;
this.name = name;
this.author = author;
this.publishDate = publishDate;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Date getPublishDate() {
return publishDate;
}
public void setPublishDate(Date publishDate) {
this.publishDate = publishDate;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this).add("ISBN", this.getIsbn()).add("name", this.getName())
.add("author", this.getAuthor()).add("publish date", this.getPublishDate()).toString();
}
}
3. MapTest.java
package org.fool.guava.collections.map;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
public class MapTest {
private Book book1;
private Book book2;
private Book book3;
private Book book4;
private List<Book> bookList;
@Before
public void setUp() throws Exception {
book1 = new Book("9787121281556", "Hadoop in Action", "LiuBei", new Date());
book2 = new Book("9787121281557", "Spark in Action", "GuanYu", new Date());
book3 = new Book("9787121281558", "Storm in Action", "ZhangFei", new Date());
book4 = new Book("9787121281559", "Kafka in Action", "ZhaoYun", new Date());
bookList = Lists.newArrayList(book1, book2, book3, book4);
}
@Test
public void testUniqueIndex() {
ImmutableMap<String, Book> bookMap = Maps.uniqueIndex(bookList.iterator(), new Function<Book, String>() {
@Override
public String apply(Book input) {
return input.getIsbn();
}
});
bookMap.forEach((k, v) -> System.out.println(Joiner.on(" ").join(k, v)));
}
@Test
public void testArrayListMultiMap() {
Multimap<String, String> multiMap = ArrayListMultimap.create();
multiMap.put("Country Shu", "LiuBei");
multiMap.put("Country Shu", "GuanYu");
multiMap.put("Country Shu", "ZhangFei");
multiMap.put("Country Shu", "ZhangFei");
multiMap.put("Country Wei", "CaoCao");
multiMap.put("Country Wei", "XunYu");
multiMap.put("Country Wei", "GuoJia");
List<String> valueList = Lists.newArrayList("LiuBei", "GuanYu", "ZhangFei", "ZhangFei");
assertEquals(multiMap.get("Country Shu"), valueList);
Map<String, Collection<String>> map = multiMap.asMap();
map.forEach((k, v) -> System.out.println(Joiner.on(" ").join(k, v)));
}
@Test
public void testHashMultimap() {
Multimap<String, String> multiMap = HashMultimap.create();
multiMap.put("Country Shu", "LiuBei");
multiMap.put("Country Shu", "GuanYu");
multiMap.put("Country Shu", "ZhangFei");
multiMap.put("Country Shu", "ZhangFei");
assertThat(multiMap.size(), equalTo(3));
multiMap.asMap().forEach((k, v) -> System.out.println(Joiner.on(" ").join(k, v)));
}
@Test
public void testBiMapForcePut() {
BiMap<String, String> biMap = HashBiMap.create();
biMap.put("1", "LvBu");
biMap.forcePut("2", "LvBu");
assertThat(biMap.containsKey("1"), equalTo(false));
assertThat(biMap.containsKey("2"), equalTo(true));
}
@Test
public void testBiMapInverse() throws Exception {
BiMap<String, String> biMap = HashBiMap.create();
biMap.put("1", "LvBu");
biMap.put("2", "DiaoChan");
assertThat(biMap.get("1"), equalTo("LvBu"));
assertThat(biMap.get("2"), equalTo("DiaoChan"));
BiMap<String, String> inverseMap = biMap.inverse();
assertThat(inverseMap.get("LvBu"), equalTo("1"));
assertThat(inverseMap.get("DiaoChan"), equalTo("2"));
}
}