📜  双图|番石榴 |Java

📅  最后修改于: 2022-05-13 01:54:24.338000             🧑  作者: Mango

双图|番石榴 |Java

双映射,即双向映射,是一种保留其值的唯一性以及其键的唯一性的映射。 BiMaps 支持inverse view ,这是另一个包含与此 bimap 相同的条目但具有相反的键和值的 bimap。

声明: com.google.common.collect.Bimap< K, V >接口的声明如下:

@GwtCompatible
public interface BiMap
extends Map

下面给出的是 Guava BiMap Interface 提供的一些方法:

返回值和异常:

  • put :如果给定值已经绑定到此 bimap 中的不同键,则抛出IllegalArgumentException 。在此事件中,bimap 将保持不变。
  • forcePut :返回先前与键关联的值,可能为 null,如果没有先前的条目,则返回 null。
  • putAll :如果尝试放置任何条目失败,则抛出IllegalArgumentException 。请注意,在引发异常之前,可能已将某些映射条目添加到 bimap。
  • values :返回一个 Set,而不是 Map 接口中指定的 Collection,因为 bimap 具有唯一值。
  • inverse :返回此 bimap 的反向视图。

下面给出的是 Guava BiMap 接口的实现:

// Java code to show implementation for
// Guava BiMap interface
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
  
class GFG {
  
    // Driver method
    public static void main(String args[])
    {
  
        // Creating a BiMap with first field as
        // an Integer and second field as String
        // stuRollMap is name of BiMap
        // i.e, the first field of BiMap stores
        // the Roll no. of student and second
        // field stores the name of Student
        BiMap stuRollMap = HashBiMap.create();
  
        stuRollMap.put(new Integer(2), "Sahil");
        stuRollMap.put(new Integer(6), "Dhiman");
        stuRollMap.put(new Integer(9), "Shubham");
        stuRollMap.put(new Integer(15), "Abhishek");
  
        // To display Roll no. of student "Dhiman"
        System.out.println(stuRollMap.inverse().get("Dhiman"));
  
        // To display Roll no. of student "Shubham"
        System.out.println(stuRollMap.inverse().get("Shubham"));
    }
}

输出 :

6
9