如何检查 Java 中的 hashmap 是否单射 (OneOnOne)?
How to check if a hashmap is Injective (OneOnOne) in Java?
我如何编写一个方法来检查 hashmap 是否是 Injective (OneOnOne)?这样地图中的每个值都只有一个键。我想要它,以便它可以通过此测试:
Map<Integer, Character> m = new HashMap<Integer, Character>();
m.put(1, 'l');
m.put(2, 'l');
assertFalse(MapUtil.isOneOnOne(m));
Map<Integer, Character> m = new HashMap<>();
m.put(1, 'l');
m.put(2, 'l');
System.out.println(isOneToOne(m));
public static boolean isOneToOne(Map<?, ?> map) {
Set<?> set = new HashSet<>(map.values());
return set.size() == map.keySet().size();
}
我如何编写一个方法来检查 hashmap 是否是 Injective (OneOnOne)?这样地图中的每个值都只有一个键。我想要它,以便它可以通过此测试:
Map<Integer, Character> m = new HashMap<Integer, Character>();
m.put(1, 'l');
m.put(2, 'l');
assertFalse(MapUtil.isOneOnOne(m));
Map<Integer, Character> m = new HashMap<>();
m.put(1, 'l');
m.put(2, 'l');
System.out.println(isOneToOne(m));
public static boolean isOneToOne(Map<?, ?> map) {
Set<?> set = new HashSet<>(map.values());
return set.size() == map.keySet().size();
}