草庐IT

Equality

全部标签

python - 确定2个列表是否具有相同的元素,而不管顺序如何?

这个问题在这里已经有了答案:Howtoefficientlycomparetwounorderedlists(notsets)?(12个回答)关闭5年前。很抱歉这个简单的问题,但我很难找到答案。当我比较2个列表时,我想知道它们是否“相等”,因为它们具有相同的内容,但顺序不同。例如:x=['a','b']y=['b','a']我希望x==y评估为True。 最佳答案 您可以简单地检查具有x和y元素的多重集是否相等:importcollectionscollections.Counter(x)==collections.Counter(

Java 包含 vs anyMatch 行为

所以如果我有一个Name对象并且有一个Name(names)类型的ArrayList,并且我想确定我的姓名列表是否包含给定的Name对象(n),我可以通过两种方式进行:booleanexists=names.contains(n);或booleanexists=names.stream().anyMatch(x->x.equals(n));我正在考虑这两个是否会表现相同,然后考虑如果将n分配为null会发生什么?据我了解,如果参数为null,则如果列表包含null,则返回true。我将如何实现这个anyMatch-是通过使用Objects.equals(x,n)吗?如果它是这样工作的,

Java 包含 vs anyMatch 行为

所以如果我有一个Name对象并且有一个Name(names)类型的ArrayList,并且我想确定我的姓名列表是否包含给定的Name对象(n),我可以通过两种方式进行:booleanexists=names.contains(n);或booleanexists=names.stream().anyMatch(x->x.equals(n));我正在考虑这两个是否会表现相同,然后考虑如果将n分配为null会发生什么?据我了解,如果参数为null,则如果列表包含null,则返回true。我将如何实现这个anyMatch-是通过使用Objects.equals(x,n)吗?如果它是这样工作的,

java - 为什么 Java 中不缓存整数?

我知道有similarposts关于这个话题,但他们并没有完全解决我的问题。当你这样做时:Integera=10;Integerb=10;System.out.println("a==b:"+(a==b));这将(显然)在大多数情况下打印true,因为[-128,127]范围内的整数以某种方式被缓存。但是:Integera=newInteger(10);Integerb=newInteger(10);System.out.println("a==b:"+(a==b));将返回false。我知道我要求的是Integer的新实例,但是由于盒装原语在Java中是不可变的,并且机器已经可以做“

java - 为什么 Java 中不缓存整数?

我知道有similarposts关于这个话题,但他们并没有完全解决我的问题。当你这样做时:Integera=10;Integerb=10;System.out.println("a==b:"+(a==b));这将(显然)在大多数情况下打印true,因为[-128,127]范围内的整数以某种方式被缓存。但是:Integera=newInteger(10);Integerb=newInteger(10);System.out.println("a==b:"+(a==b));将返回false。我知道我要求的是Integer的新实例,但是由于盒装原语在Java中是不可变的,并且机器已经可以做“

java - 将原始对象与包装对象进行比较,== 行为无法解释

我有一段代码需要理解:publicstaticvoidmain(String[]args){Characterc=newCharacter('a');Charactercy=newCharacter('a');charcx='a';System.out.println(c==cx);System.out.println(cx==cy);System.out.println(c==cy);}输出:truetruefalse我无法理解为什么只有第三条语句失败。编辑:这个问题与.equalsvs==问题不同,因为这是关于原始与对象比较的问题。 最佳答案

java - 将原始对象与包装对象进行比较,== 行为无法解释

我有一段代码需要理解:publicstaticvoidmain(String[]args){Characterc=newCharacter('a');Charactercy=newCharacter('a');charcx='a';System.out.println(c==cx);System.out.println(cx==cy);System.out.println(c==cy);}输出:truetruefalse我无法理解为什么只有第三条语句失败。编辑:这个问题与.equalsvs==问题不同,因为这是关于原始与对象比较的问题。 最佳答案

Java:如何测试数组相等性?

为什么下面的代码打印出"Different."?boolean[][]a={{false,true},{true,false}};boolean[][]b={{false,true},{true,false}};if(Arrays.equals(a,b)||a==b)System.out.println("Equal.");elseSystem.out.println("Different."); 最佳答案 Whyisthefollowingcodeprinting"Different."?因为Arrays.equals执行浅比较。

Java:如何测试数组相等性?

为什么下面的代码打印出"Different."?boolean[][]a={{false,true},{true,false}};boolean[][]b={{false,true},{true,false}};if(Arrays.equals(a,b)||a==b)System.out.println("Equal.");elseSystem.out.println("Different."); 最佳答案 Whyisthefollowingcodeprinting"Different."?因为Arrays.equals执行浅比较。

java - 当两个字符串都可以为空时如何比较两个字符串?

这个问题在这里已经有了答案:ComparetwoobjectsinJavawithpossiblenullvalues(12个回答)关闭7年前。我知道调用equals方法优于使用==运算符(请参阅thisquestion)。如果两个字符串都为空或表示相同的字符串,我希望两个字符串比较相等。不幸的是,如果字符串为null,equals方法将抛出NPE。我的代码目前是:booleanequals(Strings1,Strings2){if(s1==null&&s2==null){returntrue;}if(s1==null||s2==null){returnfalse;}returns1