找不到符号:方法ceiling(int)

时间:2017-09-30 04:43:22

标签: java treeset

尽管ceiling类中存在floorTreeSet函数,但我无法理解为什么会出现此错误。我收到以下错误:

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;
}

2 个答案:

答案 0 :(得分:0)

这是因为您的set变量类型为Set<Integer>而非TreeSet<Integer>NavigableSet<Integer>TreeSet实现的接口)。如果您想调用属于NavigableSet的方法,则必须将局部变量set的类型更改为NavigableSet<Integer>,或者您可以在调用方法之前转换当前变量的方法,例如

((NavigableSet<Integer>) set).ceiling(nums[i]);

更改局部变量类型可能是更好的选择。

答案 1 :(得分:0)

更改

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

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

您将能够调用这些方法。只有Set。

不存在天花板和地板的方法