Leetcode220错误:无法比拟的类型:int和<null>

时间:2016-11-29 17:10:30

标签: java algorithm treeset

我在编译下面的代码时收到错误,这是&#34;无法比较的类型:int和&#34;在第10行。

public class Solution {
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
    if (nums == null || k <= 0 || t < 0 || nums.length < 2) return false;

    TreeSet<Integer> set = new TreeSet<>();
    for (int i = 0; i < nums.length; i++) {
        int floor = set.floor(nums[i] + t);//return largest number smaller than nums[i] + t or null
        int ceil = set.ceiling(nums[i] - t);//return least number larger than num[i] - t or null

        if ((floor != null && floor >= nums[i]) || (ceil != null && ceil <= nums[i])) {
            return true;
        }

        set.add(nums[i]);

        if (set.size() > k) {
            set.remove(nums[i - k]);
        }
    }

    return false;
}}

但如果我在treeset,floor和ceil之前添加final关键字,代码将被成功编译。谁能帮我解释一下发生了什么?感谢。

...
final TreeSet<Integer> set = new TreeSet<>();
for (int i = 0; i < nums.length; i++) {
    final Integer floor = set.floor(nums[i] + t);//return largest number smaller than nums[i] + t or null
    final Integer ceil = set.ceiling(nums[i] - t);//return least number larger than num[i] - t or null
...

2 个答案:

答案 0 :(得分:5)

int floorfloor定义为基本int类型。 Integer floorfloor定义为非平凡的class类型。 null仅用于非平凡类型

答案 1 :(得分:0)

它与final关键字无关(无论如何都可以使用它)。您无法将原始值(int)与null进行比较。相反,您应该使用相应的对象(Integer)。