Integer为封装对象,比较大小不要用“==”,而要用equals
当然有时候发现用”==”也有效,如下面代码结果就是true
Integer a=Integer.valueOf(127);
Integer b=Integer.valueOf(127);
System.out.println(a==b);
这个是由于Integer.valueOf方法中做了判断,当值小于128时,会从缓存中读,
不会重新new对象,这时,a、b指向的是同一个地址,当超过了128就会重新new对
象,这时就不会相等了。
扩展
1、String类型比较也一样,不要用“==”,要用equals,并且比较之前先判null
2、通过下面这种方式去重,可能会有问题,当T为String可能没问题,但当T为
对象时,一定要关注T中的equals方法,如果继承Object,默认是按==比较的,达不到预期效果,需要重写equals方法
List<T> resultresult = new ArrayList<t>();
Result = result.stream().distinct().collect(Collectors.toList());