Tag: 比较

如何处理compare()中的空字段?

在Java中,我使用一个类,其中一些字段可以为null 。 例如: class Foo { String bar; //…. } 我想为这个class写一个BarComparator, private static class BarComparator implements Comparator { public int compare( final Foo o1, final Foo o2 ) { // Implementation goes here } } 有没有一种标准的方法来处理o1 , o2 , o1.bar , o2.bar中的任何一个都可以为null ,而不需要编写大量的嵌套if … else ? 干杯!

equals()和hashCode()之间的区别

我想要一个关于equals(),“==”和hashCode()的简短定义。 如果我运行以下代码意味着输出将是“true false 2420395 2420395”。 但我明白equals()方法比较字符串和“==”比较引用。 但是在输出中,hashCcode()方法将两个字符串的引用号打印为相同,然后“==”返回“false”。 String str = “Name”; String str1 = new String(“Name”); if(str.equals(str1)) System.out.println(“true”); else System.out.println(“false”); if(str==str1) System.out.println(“true”); else System.out.println(“false”); System.out.println(str.hashCode()); System.out.println(str1.hashCode()); }

比较两个排序的int数组

我有数百万个固定大小(100)的int数组。 每个数组都已排序并具有唯一元素。 对于每个数组,我想找到所有具有70%公共元素的数组。 现在我每秒进行大约100万次比较(使用Arrays.binarySearch()),这对我们来说太慢了。 谁能推荐更好的搜索算法?

在字符串文字上调用equals

我只是整理了我的代码并且有这篇文章: String saving = getValue(); if(saving != null && saving.equals(“true”)){ // do something } 然后我想到了另一种方法来摆脱对null的检查: if(“true”.equals(saving)){ // do something } 它确实有效,但这样做是否安全 ? 我的意思是字符串文字存储在公共池中,而由new创建的字符串对象存储在堆上。 但是常量池中的字符串也是对象,对吧? 但即使它使代码更短,它似乎也不是正确的做法。

在Java中识别具有相同内容的图像

不久之前,我花了一些时间寻找方法来确定两个图像是否相同才能回答这个问题 。 我现在面临一个稍微不同的问题:我手边有大约两千张图像,其中一些具有相同的内容,但是彼此的缩放/旋转版本(旋转总是90°的倍数),以及不同的压缩和图像格式(主要是jpg,一些png,没有别的)。 缩放不超过大约2:1。 我想做的是消除重复,同时保留最高质量的实例。 由于Java是我非常熟练的唯一语言,我需要使用Java。 对不同问题的回答提供了许多有用的链接,但看起来它们中的任何一个都不能在缩放/旋转时识别重复。 这个问题以及答案建议首先将所有图像缩放到非常小的尺寸(例如32 * 32或16 * 16),然后基本上进行一些散列,并基于散列进行比较。 这对我来说听起来很聪明,图像可以在比较之前预先排序,这将在排序之后成为O(n)问题。 但是,鉴于图像可能会旋转,我不知道如何处理它; 一种选择是手动浏览所有图像并决定旋转,因为它们所描绘的具有明确的方向(人眼可以非常容易地决定“向上”应该是哪种方式)。 如果可能的话,我想避免这样做。 是否有既定的方法/算法(链接提到SSIM)来处理这类问题,或者你们中的任何人都可以提出比上述更好的方法吗? 也许有人知道适合Java的Java库(在链接的问题中提到了OpenCV的Java包装器,然后是ImageJ,imgsclr)? 任何帮助表示赞赏。

一种简单的方法(工具?)来比较不同格式的像素像素?

好吧,我现在已经在java中编写了一个基本的无损jpeg joiner东西,但我想将它生成的文件与原始文件进行比较。 我只能在hex编辑器中进行比较,有没有人知道一个简单的方法,软件或基于java(最好是软件,因为我现在感觉不再需要编码!)我可以比较两个图像并产生一个“差异图” “像素不一样的地方? 谢谢。

任何人都可以量化C ++和Java之间的性能差异吗?

Java在JIT之前最初很慢,但今天的性能非常接近C ++。 我想知道是否有人在两种语言之间进行了可衡量的性能比较? 与C ++相比,Java在哪里不足? Java为开发人员提供了许多生产力提升,因此他们可以更快地编写应用程序,因为垃圾大学,缺乏指针等。例如,如果用100写的话,可以更快,更可靠地开发Firefox,Webkit和Open Office等应用程序。 %Java,可能是2倍,但开发人员仍然出于性能原因选择C / C ++。 有人可以certificateJava不能像我提到的那样为应用程序执行C ++。 我只想补充一点,在C ++中仍然有很多应用程序工作是有原因的。 这不仅仅是一个主观问题。 具有较高抽象级别的语言经常会产生性能损失。 如果没有这种惩罚,我们都会用更高级别的语言进行编程。 Java与C ++相比还在哪里支付? 请明确点。

比较日期?

我正在尝试比较Android中的两个日期,但我得到了这个 当我写这个 SimpleDateFormat sdf = new SimpleDateFormat(“ddMMyyyy”); String valid_until = “26052018”; final Date strDate = sdf.parse(valid_until); 如果我把尝试和这样的抓住 我无法比较日期,因为它说我没有声明strDate 。

如何在Java中自定义generics类型链表?

我在java中编写自己的链表,它是generics类型,而不是使用java集合链表。 链表的add方法由以下代码组成: public void add(T item, int position) { Node addThis = new Node(item); Node prev = head; int i; if(position <= 0) { System.out.println("Error: Cannot add element before position 1."); } else if(position == 1) { addThis.setNext(head); head = addThis; } else { for(i = 1; i < position-1; i++) { prev = prev.getNext(); […]

比较用户定义的时间和当前时间Java

我试图将格式为HH:MM的用户定义时间与无限循环中的当前时间进行比较。 当它们相等时,应该采取一些行动。 我使用了以下代码: //taking user input DateFormat sdf = new SimpleDateFormat(“hh:mm”); String time = jFormattedTextField1.getText(); userTime = sdf.parse(time); //taking current time Date timeNow = new Date(); while (true){ if (timeNow.equals(userTime)){ System.out.println(“The time equals, task is done!”); ChangingWindow window = new ChangingWindow(chosenColor); 当我打印这两个时间点时,我收到以下信息: 用户时间:周一1月01日10:35:00 CET 1970 当前时间:9月29日星期二10:33:21 CEST 2015 当前时间显然是可以的,但是对于用户定义的时间,他一直在回归时代。 如果有人有任何建议我将不胜感激!