你没有重写class a的equals方法,此时equals是直接使用基础父类Object的equals方法,而你看源代码或者看API手册都可以知道Object.equals()的实现就是使用"==",即直接比较指针的地址
成都创新互联公司专注于中大型企业的成都网站建设、做网站和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户上1000+,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注成都品牌网站建设和互联网程序开发,在前进的路上,与客户一起成长!
所以你的写法不行
你需要在class a中重写equals方法来定制比较相等的策略
对于两个
引用类型
对象obj1和obj2,判断它们的运行时类是否相同:
obj1.getClass() == obj2.getClass()对于一个基本类型对象
pt1
以及一个引用类型对象obj2,它们的类型必然不同,无需判断。
对于两个基本类型对象pt1以及
pt2
,它们的定义必然已经出现在方法定义中或是类定义的代码中,同样无需判断。
我这有种解法:
1、将list1和list2进行合并,在合并过程中去重。
2、用Collections.sort()进行排序就行了。代码如下:
ListInteger list = new ArrayListInteger();
for (Integer i : list2) {
if (list.indexOf(i) == -1) {
list.add(i);
}
}
for (Integer i : list1) {
if (list.indexOf(i) == -1) {
list.add(i);
}
}
Collections.sort(list);