Tag: 比较

Stream.max(Integer :: max):意外结果

我正在学习1z0-809:Java SE 8程序员II使用Enthuware的模拟测试。 遇到这个问题。 List ls = Arrays.asList(3,4,6,9,2,5,7); System.out.println(ls.stream().reduce(Integer.MIN_VALUE, (a, b)->a>b?a:b)); //1 System.out.println(ls.stream().max(Integer::max).get()); //2 System.out.println(ls.stream().max(Integer::compare).get()); //3 System.out.println(ls.stream().max((a, b)->a>b?a:b)); //4 以上哪个陈述将打印9? 答案是 1和3 但还有别的东西。 我不明白为什么 System.out.println(ls.stream().max(Integer::max).get()); // PRINTS 3 我尝试使用peek调试它,但它无法帮助我理解。 我尝试使用Integer::max和Integer::compare对ls进行排序 ls.sort(Integer::max); // [3, 4, 6, 9, 2, 5, 7] ls.sort(Integer::compare); // [2, 3, 4, 5, 6, 7, 9] 当然,我得到的事实是Integer::max不是比较器,因此它具有相同的签名。 对我来说, max在第一种情况下应该是7 ,因为它是最后一个元素,就像我用Ìnteger::compare排序一样 有人可以把它分解成简单的东西吗?

比较字节值?

我很想知道为什么,当我将一个byte数组与一个值进行比较时…… boolean match = ((data[0] & 0xFF) == 0xFE); …返回true ,而…… boolean match = (data[0] == 0xFE); …才不是? data是一个byte数组 data[0] = (byte) 0xFE;

如何在没有java utils的情况下比较两个字符串数组

检查数组arr1是否在java中以相同的顺序包含与arr2相同的元素。 例如: isTheSame({“1”, “2”, “3”}, {“1”, “2”, “3”}) → true isTheSame({“1”, “2”, “3”}, {“2”, “1”, “1”}) → false isTheSame({“1”, “2”, “3”}, {“3”, “1”, “2”}) → false 到目前为止我有 public boolean isTheSame(String[] arr1, String[] arr2) { if (arr1.length == arr2.length) { for (int i = 0; i < arr1.length; i++) { if (arr1[i] == arr2[i]) { return […]

比较Groovy / Java中的两个XML字符串/文件

我正在编写unit testing来检查一些XML构建器。 现在我遇到了预期结果和实际结果之间的语法差异问题,尽管它们的语义相同。 例: 预期结果: text here 实际结果: text here 我尝试使用XmlUtil.serialize()来规范化xml,但这似乎保留了空白,留下了语法上的差异。 我怎样才能获得xml字符串的规范化/规范forms,以使我的测试更加健壮? 我正在编写一个Grails应用程序,所以我对Groovy或Java中的任何解决方案都没问题。

将Integers与==进行比较究竟做了什么?

编辑:好的,好的,我误读了。 我不是将int与Integer进行比较。 正好指出。 我的SCJP书说: 当==用于将基元与包装器进行比较时,包装器将被解包,并且比较将是原始的。 所以你认为这段代码会打印出来: Integer i1 = 1; //if this were int it’d be correct and behave as the book says. Integer i2 = new Integer(1); System.out.println(i1 == i2); 但它打印false 。 另外,根据我的书,这应该打印为true : Integer i1 = 1000; //it does print `true` with i1 = 1000, but not i1 = 1, and one of […]

从两个字符串数组返回公共元素的最有效方法

在Java中,从两个String Arrays返回公共元素的最有效方法是什么? 我可以用一对for循环来做,但这似乎不是非常有效。 根据我对类似SO问题的回顾,我能想到的最好的是转换为List然后应用retainAll : List compareList = Arrays.asList(strArr1); List baseList = Arrays.asList(strArr2); baseList.retainAll(compareList);

比较相同值和相同键集的两个哈希映射?

如果我想知道它们中是否包含不同的键,并且如果这些键的值彼此匹配,我怎么能最好地比较两个HashMap 。 Map mapA = new HashMap(); mapA.put(“A”, “1”); mapA.put(“B”, “2”); Map mapB = new HashMap(); mapB.put(“D”, “4”); mapB.put(“A”, “1”); 将A与B进行比较时,由于键B和D不同,它应该会失败。 我怎样才能最好地比较未排序的哈希图?

java.util.Objects.isNull vs object == null

如您所知, java.util.Objects是 用于操作对象的实用程序方法 其中一种方法是Objects.isNull()。 我的理解是Objects.isNull()将通过省略second =来消除意外地将null值赋值给对象的机会。 但是,API Note指出: 此方法存在用作谓词,filter(Objects :: isNull) 是否有任何理由/情况我应该在if语句中使用Object = is null而不是Objects.isNull()? Objects.isNull()应该仅限于Predicates吗? 在此先感谢,卢卡斯

如何比较大文本文件?

关于你对我的“技巧”的看法,我有一个普遍的问题。 有2个文本文件( file_1和file_2 )需要相互比较。 两者都非常庞大(3-4千兆字节,每个30,000,000到45,000,000行)。 我的想法是将file_1几行(尽可能多的) file_1入内存,然后将它们与file_2 所有行进行file_2 。 如果匹配,则匹配的两个文件中的行应写入新文件。 然后继续使用接下来的1000行file_1 ,并将这些行与file_2 所有行进行比较,直到我完全浏览file_1 。 但这对我来说实际上非常非常耗时且复杂。 你能想到比较这两个文件的任何其他方法吗? 您认为比较可能需要多长时间? 对于我的计划,时间并不重要。 我没有处理过如此庞大的文件的经验,因此我不知道这需要多长时间。 它不应该超过一天。 ;-)但我担心我的技术可能会永远… 刚出现在我脑海中的Antoher问题:你会在内存中读到多少行? 越多越好? 有没有办法在实际尝试之前确定可能的行数? 我想尽可能多地阅读(因为我认为这更快)但我经常用完内存。 提前致谢。 编辑我想我必须多解释一下我的问题。 目的不是看两个文件是否相同(它们不是)。 每个文件中都有一些共享相同“特征”的行。 这是一个例子: file_1看起来有点像这样: mat1 1000 2000 TEXT //this means the range is from 1000 – 2000 mat1 2040 2050 TEXT mat3 10000 10010 TEXT mat2 20 500 […]

相等的对象比较:JAVA

public ClassA { private String firstId; private String secondId; public void setFirstId(String firstId) { this.firstId = firstId; } public String getFirstId() { return id; } public void setSecondId(String secondId) { this.secondId = secondId; } public String getSecondId() { return secondId; } } public ClassB { private String firstId; private String secondId; public void setFirstId(String firstId) […]