代码:
transform.position += transform.forward * Time.deltaTime * movementSpeed;
答案 0 :(得分:1)
您正在比较两个Collection<HashSet<Integer>>>
对象的引用,但您想要比较两个<HashSet<Integer>>
个对象。尝试从<HashSet<Integer>>
个对象中提取Collection<HashSet<Integer>>>
个对象,并将其与equals()
方法进行比较。顺便说一下 - 将参考文献与==
进行比较的结果也应该是true
。
答案 1 :(得分:1)
正确比较对象数据类型的相等性是使用方法equals()
。
map1.equals(map2);
答案 2 :(得分:1)
==
告诉您两个值是否相同。 但是,map1.values()
的值不包含集合的集合,而是对包含对集合的引用的集合的引用。
因为它们是引用,map1.values() == map2.values()
会告诉您map1.values()
和map2.values()
是否引用相同的对象,而不是它们,因此它的计算结果为false。
您可以通过调用equals
方法比较两个对象,例如map1.values().equals(map2.values())
。
答案 3 :(得分:0)
map1和map2都创建了自己的values
列表。两个列表在您的情况下都有一个单独的元素,这是相同的==
。如果您使用equals
,那么两个列表都是相同的。 ==
测试对象的相同性/身份。
顺便说一下,java中的约定是:
Map<Integer, Set<Integer>> map1 = new HashMap<>();
Map<Integer, Set<Integer>> map2 = new HashMap<>();
Set<Integer> set1 = new HashSet<>();
对于使用变量的接口(Map,Set),有理由:因为这样可能会改变实现,例如更改为按键排序的TreeMap。特别好:您的代码将以最广泛的类型来运行。