新接口被添加到支持双向映射。 使用双向映射,可以使用值查找键,并且可以使用键轻松查找值。
接口声明
以下是org.apache.commons.collections4.BidiMap <K,V>
接口的声明 -
public interface BidiMap<K,V>
extends IterableMap<K,V>
以下是接口的方法列表 -
编号 | 方法 | 描述 |
---|---|---|
1 | K getKey(Object value) | 获取当前映射到指定值的键。 |
2 | BidiMap<V,K> inverseBidiMap() | 获取该映射的键和值的键视图。 |
3 | V put(K key, V value) | 将键值对放入映射中,替换之前的任何一对。 |
4 | K removeValue(Object value) | 删除当前映射到指定值的键值对(可选操作)。 |
5 | Set<V> values() | 返回此映射中包含的值的Set 视图。 |
方法继承
该接口继承了以下接口的方法 -
org.apache.commons.collections4.Get
org.apache.commons.collections4.IterableGet
org.apache.commons.collections4.Put
java.util.Map
BidiMap接口实例
案例1:
知识点:BidiMap 的key和value都必须是唯一的,相同的key或者value,后添加的覆盖先添加的
package com.example.demo7;
import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.bidimap.TreeBidiMap;
public class BidiMapTester {
public static void main(String[] args) {
BidiMap<String, String> bidi = new TreeBidiMap<>();
bidi.put("One", "1");
bidi.put("Two", "1");
bidi.put("Three", "3");
bidi.put("Three", "4");
System.out.println("Map: " + bidi);
}
}
控制台结果
Map: {Three=4, Two=1}
讨论:
我们在map中添加了四个元素,第一个和第二个的value相同,key不同;第三个和第四个的key相同,value不同。结果在map中只添加成功了第二个元素和第四个元素,第一个和第三个都被覆盖了。
说明 BidiMap 的key和value都必须是唯一的,相同的key或者value,后添加的覆盖先添加的。
案例2:
知识点:BidiMap 可以通过key获取value,也可以通过value获取key, 可以通过key删除数据,也可以通过value删除数据。
package com.example.demo7;
import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.bidimap.TreeBidiMap;
public class BidiMapTester {
public static void main(String[] args) {
BidiMap<String, String> bidi = new TreeBidiMap<>();
bidi.put("One", "1");
bidi.put("Two", "2");
bidi.put("Three", "3");
bidi.put("Four", "4");
System.out.println("根据key获取value: " + bidi.get("One"));
System.out.println("根据value获取key: " + bidi.getKey("1"));
System.out.println("原始的Map: " + bidi);
bidi.remove("One");
System.out.println("根据key删除数据后的Map: " + bidi);
bidi.removeValue("2");
System.out.println("根据value删除数据后的Map: " + bidi);
BidiMap<String, String> inversedMap = bidi.inverseBidiMap();
System.out.println("键值对Map: " + inversedMap);
}
}
控制台结果
根据key获取value: 1
根据value获取key: One
原始的Map: {Four=4, One=1, Three=3, Two=2}
根据key删除数据后的Map: {Four=4, Three=3, Two=2}
根据value删除数据后的Map: {Four=4, Three=3}
键值对Map: {3=Three, 4=Four}