Java 找不到符号:方法上限(int)

Java 找不到符号:方法上限(int),java,treeset,Java,Treeset,尽管树集类中存在天花板和地板函数,但我无法理解为什么会出现此错误。我发现以下错误: 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>

尽管
树集
类中存在
天花板
地板
函数,但我无法理解为什么会出现此错误。我发现以下错误:

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;
}
import java.util.Set;
导入java.util.TreeSet;
公共静态布尔值包含任意多个副本(int[]nums,int k,int t){
Set=新树集();

对于(int i=0;i这是因为
set
变量类型是
set
,而不是
TreeSet
NavigableSet
(实现
TreeSet
的接口)。如果要调用属于
NavigableSet
的方法,则必须将局部变量的类型
set
更改为
NavigableSet
,或者可以在调用方法之前强制转换当前变量,例如

((NavigableSet<Integer>) set).ceiling(nums[i]);
((NavigableSet)套装)。天花板(nums[i]);
不过,更改局部变量类型将是更好的选择。

更改

 Set<Integer> set = new TreeSet<>();
Set Set=new TreeSet();

TreeSet set=newtreeset();

您将能够调用这些方法。对于刚设置的对象,方法天花板和地板不存在。

什么是
Integer x=Set.(nums[i]);
应该是什么?Oops..在复制粘贴之前尝试了不同的方法..应该是设置的。地板(nums[i]).顺便说一句,
天花板
确实存在于接口中。真不敢相信我犯了这么愚蠢的错误:)
TreeSet<Integer> set = new TreeSet<>();