Leetcode220 error: incomparable types: int and <null>
Leetcode220 error: incomparable types: int and <null>
我在编译下面的代码时收到一个错误,即第 10 行 "incomparable types: int and "。
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
...
int floor
将 floor
定义为基本 int
类型。 Integer floor
将 floor
定义为非平凡的 class
类型。 null
仅用于非平凡类型
它与 final
关键字无关(没有它也能正常工作)。您无法将原始值 (int
) 与 null
进行比较。相反,您应该使用相应的对象 (Integer
).
我在编译下面的代码时收到一个错误,即第 10 行 "incomparable types: int and "。
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
...
int floor
将 floor
定义为基本 int
类型。 Integer floor
将 floor
定义为非平凡的 class
类型。 null
仅用于非平凡类型
它与 final
关键字无关(没有它也能正常工作)。您无法将原始值 (int
) 与 null
进行比较。相反,您应该使用相应的对象 (Integer
).