本文整理汇总了Java中com.google.common.collect.BiMap.inverse方法的典型用法代码示例。如果您正苦于以下问题:Java BiMap.inverse方法的具体用法?Java BiMap.inverse怎么用?Java BiMap.inverse使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.google.common.collect.BiMap
的用法示例。
在下文中一共展示了BiMap.inverse方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: from
import com.google.common.collect.BiMap; //导入方法依赖的package包/类
public static ClassRenamingMapper from(ClassNameMapper originalMap, ClassNameMapper targetMap) {
ImmutableBiMap.Builder<String, String> translationBuilder = ImmutableBiMap.builder();
ImmutableSet.Builder<String> newClasses = ImmutableSet.builder();
BiMap<String, String> sourceObfuscatedToOriginal = originalMap.getObfuscatedToOriginalMapping();
BiMap<String, String> sourceOriginalToObfuscated = sourceObfuscatedToOriginal.inverse();
BiMap<String, String> targetObfuscatedToOriginal = targetMap.getObfuscatedToOriginalMapping();
BiMap<String, String> targetOriginalToObfuscated = targetObfuscatedToOriginal.inverse();
for (String originalName : sourceOriginalToObfuscated.keySet()) {
String sourceObfuscatedName = sourceOriginalToObfuscated.get(originalName);
String targetObfuscatedName = targetOriginalToObfuscated.get(originalName);
if (targetObfuscatedName == null) {
newClasses.add(originalName);
continue;
}
translationBuilder.put(sourceObfuscatedName, targetObfuscatedName);
}
ImmutableBiMap<String, String> translation = translationBuilder.build();
ImmutableSet<String> unusedNames = ImmutableSet
.copyOf(Sets.difference(targetObfuscatedToOriginal.keySet(), translation.values()));
return new ClassRenamingMapper(translation, newClasses.build(), unusedNames);
}
示例2: testConflictInsertKV
import com.google.common.collect.BiMap; //导入方法依赖的package包/类
/**
* BiMap存储数据时出现冲突
* 存储时,如果key相同,则会覆盖,则逆转后不会有问题
* 存储时,如果key不同,value有相同,则逆转时会抛出异常IllegalArgumentException
*/
@Test
public void testConflictInsertKV() {
// 存储相同key数据,此时会覆盖k1=v1
BiMap<String, String> biMap1 = HashBiMap.create();
biMap1.put("k1", "v1");
biMap1.put("k1", "v2");
System.out.println("biMap1: " + biMap1);
// 获取的只有 v2=k1
BiMap<String, String> inverseBiMap1 = biMap1.inverse();
System.out.println("inverseBiMap1: " + inverseBiMap1);
System.out.println("--------------------------------------");
// 存储相同的value数据
BiMap<String, String> biMap2 = HashBiMap.create();
biMap2.put("k1", "v1");
// 此时抛出异常 java.lang.IllegalArgumentException: value already present: v1
biMap2.put("k2", "v1");
System.out.println("biMap2: " + biMap2);
BiMap<String, String> inverseBiMap2 = biMap2.inverse();
System.out.println("inverseBiMap2: " + inverseBiMap2);
}
示例3: testFixedConflict
import com.google.common.collect.BiMap; //导入方法依赖的package包/类
/**
* value如果有冲突时会抛异常,此时可以选择强制覆盖, forcePut
*/
@Test
public void testFixedConflict() {
BiMap<String, String> biMap = HashBiMap.create();
biMap.put("k1", "v1");
// 此时会强制覆盖,连原来的k1=v1都不存在
biMap.forcePut("k2", "v1");
// biMap: {k2=v1}
System.out.println("biMap2: " + biMap);
BiMap<String, String> inverseBiMap = biMap.inverse();
// inverseBiMap: {v1=k2}
System.out.println("inverseBiMap: " + inverseBiMap);
}
示例4: testInverseDate
import com.google.common.collect.BiMap; //导入方法依赖的package包/类
/**
* inverse() BiMap的核心功能inverse,inverse后返回新的BiMap,此时key-value做了翻转
* inverse() 不改变原来BiMap,而是新生成一个
* 此时k,v 的存储没有相同的数据冲突
*/
@Test
public void testInverseDate() {
BiMap<String, String> biMap = HashBiMap.create();
biMap.put("1233", "haoc");
biMap.put("1244", "jim");
biMap.put("1255", "jack");
// k->v
String v1 = biMap.get("1233");
String v2 = biMap.get("1244");
String v3 = biMap.get("1255");
System.out.println(v1);
System.out.println(v2);
System.out.println(v3);
// 做键值翻转
BiMap<String, String> inverseBiMap = biMap.inverse();
// v->k
String k1 = inverseBiMap.get("haoc");
String k2 = inverseBiMap.get("jim");
String k3 = inverseBiMap.get("jack");
System.out.println(k1);
System.out.println(k2);
System.out.println(k3);
}
示例5: BiMapPair
import com.google.common.collect.BiMap; //导入方法依赖的package包/类
BiMapPair(BiMap<K, V> original) {
this.forward = original;
this.backward = original.inverse();
}