找不到符号:方法 ceiling(int)
cannot find symbol: method ceiling(int)
尽管 TreeSet
class 中存在 ceiling
和 floor
函数,但我无法理解为什么会出现此错误。我收到以下错误:
cannot find symbol: method ceiling(int)
这是我的 Java 代码:
import java.util.Set;
import java.util.TreeSet;
public static boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
Set<Integer> set = new TreeSet<>();
for (int i = 0; i<nums.length; i++) {
Integer x = set.floor(nums[i]);
if(x!= null && x<= nums[i]+t)
return true;
Integer y = set.ceiling(nums[i]);
if(y!= null && nums[i]<= y+t)
return true;
set.add(nums[i]);
if(set.size()>k)
set.remove(nums[i-k]);
}
return false;
}
这是因为您的 set
变量类型是 Set<Integer>
而不是 TreeSet<Integer>
或 NavigableSet<Integer>
(TreeSet
实现的接口)。如果你想调用属于 NavigableSet
的方法,你必须将局部变量的类型 set
更改为 NavigableSet<Integer>
或者你可以在调用方法之前强制转换当前变量,例如
((NavigableSet<Integer>) set).ceiling(nums[i]);
改变局部变量类型会是更好的选择。
改变
Set<Integer> set = new TreeSet<>();
至
TreeSet<Integer> set = new TreeSet<>();
您将能够调用这些方法。仅 Set 不存在方法 ceiling 和 floor。
尽管 TreeSet
class 中存在 ceiling
和 floor
函数,但我无法理解为什么会出现此错误。我收到以下错误:
cannot find symbol: method ceiling(int)
这是我的 Java 代码:
import java.util.Set;
import java.util.TreeSet;
public static boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
Set<Integer> set = new TreeSet<>();
for (int i = 0; i<nums.length; i++) {
Integer x = set.floor(nums[i]);
if(x!= null && x<= nums[i]+t)
return true;
Integer y = set.ceiling(nums[i]);
if(y!= null && nums[i]<= y+t)
return true;
set.add(nums[i]);
if(set.size()>k)
set.remove(nums[i-k]);
}
return false;
}
这是因为您的 set
变量类型是 Set<Integer>
而不是 TreeSet<Integer>
或 NavigableSet<Integer>
(TreeSet
实现的接口)。如果你想调用属于 NavigableSet
的方法,你必须将局部变量的类型 set
更改为 NavigableSet<Integer>
或者你可以在调用方法之前强制转换当前变量,例如
((NavigableSet<Integer>) set).ceiling(nums[i]);
改变局部变量类型会是更好的选择。
改变
Set<Integer> set = new TreeSet<>();
至
TreeSet<Integer> set = new TreeSet<>();
您将能够调用这些方法。仅 Set 不存在方法 ceiling 和 floor。