if ((File_1[i].ID.equals(File_2[j].ID))
&& (File_1[i].Relation.equals(File_2[j].Relation)))
这里的第一个条件,(File_1[i].ID.equals(File_2[j].ID)
在假定为真时显示为false。他们都有相同的价值观。
我做错了吗?这很不寻常。
ID: fa001
ID: fa001
这些是比较的前2个变量的值,但它显示为false。
答案 0 :(得分:3)
原始海报说ID是String类型,String周围有空格。为了删除String s的空格:
s = s.trim();
但是,如果ID是您创建的类型,请确保实施.hashCode()
方法。来自Javadocs:
如果两个对象根据equals(Object)方法相等,那么 必须在两个对象中的每一个上调用hashCode方法 相同的整数结果。
还要确保从类Object重写.equals()
,以便定义新对象类型的值是否相等。
答案 1 :(得分:1)
根据ID的类型(int
,string
,char[]
等),.equals
方法可以做一些奇怪的事情。假设它们是字符串,请尝试比较ID.trim()
,这将删除ID周围的任何空格。