Maps

来源:互联网 发布:js调用支付宝扫一扫 编辑:程序博客网 时间:2024/05/22 07:58
import java.util.Map;
import org.junit.Test;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.MapDifference;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;


/**
 * @author Andypan
 * @MapsTest.java
 * @{describe}
 * @date 2017年7月25日 下午10:05:56
 */
public class MapsTest
{
@Test
public void test()
{
/**
* Maps.uniqueIndex(Iterable,Function)通常针对的场景是:有一组对象,它们在某个属性上分别有独一无二的值,
* 而我们希望能够按照这个属性值查找对象——译者注:
* 这个方法返回一个Map,键为Function返回的属性值,值为Iterable中相应的元素,因此我们可以反复用这个Map进行查找操作。
* 比方说,我们有一堆字符串,这些字符串的长度都是独一无二的,而我们希望能够按照特定长度查找字符串:

*/
ImmutableMap<Integer, String> stringsByIndex = Maps.uniqueIndex(Sets.newHashSet("a", "bb", "ccc", "dddd"),
new Function<String, Integer>() {
public Integer apply(String string)
{
return string.length();
}
});
// {2=bb, 1=a, 3=ccc, 4=dddd}
System.out.println(stringsByIndex);


}


@Test
public void test2()
{
Map<String, Integer> left = ImmutableMap.of("a", 1, "b", 2, "c", 3,"d",5);
Map<String, Integer> right = ImmutableMap.of("a", 1, "b", 2, "c", 4,"e",6);
MapDifference<String, Integer> diff = Maps.difference(left, right);

System.out.println(diff);
System.out.println(diff.entriesDiffering());
System.out.println(diff.entriesDiffering().get("c"));
System.out.println(diff.entriesDiffering().get("c").leftValue());
System.out.println(diff.entriesInCommon());
System.out.println(diff.entriesOnlyOnLeft());
System.out.println(diff.entriesOnlyOnRight());
System.out.println(diff.entriesInCommon());


}
}
原创粉丝点击