java-检查列表中是否存在对象数组
我在此结构中有一个对象数组列表:java-检查列表中是否存在对象数组,java,list,Java,List,我在此结构中有一个对象数组列表: List<Object[]> numbers = new ArrayList<>(); numbers.add(new Object[]{1, 2, 3, 4}); 此条件始终返回false。有什么问题吗?您可以尝试以下方法: List<Object[]> numbers = new ArrayList<>(); numbers .add(new Object[]{1, 2, 3, 4}); boolean b
List<Object[]> numbers = new ArrayList<>();
numbers.add(new Object[]{1, 2, 3, 4});
此条件始终返回false。有什么问题吗?您可以尝试以下方法:
List<Object[]> numbers = new ArrayList<>();
numbers .add(new Object[]{1, 2, 3, 4});
boolean b = list.stream().anyMatch(o -> Arrays.deepEquals(o, new Object[]{1, 2, 3, 4}));
System.out.println("b = " + b);
你能用整数数组代替对象吗?
newsomething()
创建一个新实例,这样你的newobject[]{1,2,3,4}
都是不同的(不是相同的hashcode)@RC。但是contains
方法使用equals
方法查找匹配项object@sidgate-是,但对于数组,equals()
sin未被覆盖,因此您将只检查引用在这种情况下,而不是使用List
您应该使用List
我觉得作为Java 8选项,这个答案会让您受益更多。我已经在我的PC中进行了检查,它运行良好,您可以尝试。您应该尝试一下,不要使用新的运算符列表编号=new ArrayList();Object[]obj=新对象[]{1,2,3,4};编号。添加(obj);if(numbers.contains(obj))System.out.println(“True”);else System.out.println(“假”);是的,我知道它有效。这可能就是我没有否决它的原因。这里的要点是,我在回答中链接到的重复问题(随后投票结束这个问题)将从这个答案中受益更多,因为第一个-这是一个重复的问题,第二个-链接的重复中确实缺少Java 8选项。
List<Object[]> numbers = new ArrayList<>();
numbers .add(new Object[]{1, 2, 3, 4});
boolean b = list.stream().anyMatch(o -> Arrays.deepEquals(o, new Object[]{1, 2, 3, 4}));
System.out.println("b = " + b);
b = true