小编Sea*_*rty的帖子

比较器不适用于Arrays.sort

所以我正在研究一个比较器问题,我无法弄清楚为什么Array.sort第一堂课给我的错误是:

Arrays类型中的方法sort(T [],Comparator)不适用于参数(ArrayList,CalorieComparator)

餐厅类:

import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;

public class Restaurant {
    private ArrayList<Edible> elist;

    public Restaurant() {
    }

    public void addEdibleItem(Edible item){
        elist.add(item);
    }

    public List<Edible> orderByCalories(){
        Arrays.sort(elist, new CalorieComparator());
    }
Run Code Online (Sandbox Code Playgroud)

CalorieComparator类:

import java.util.Comparator;
public class CalorieComparator implements Comparator {

    public int compare(Object o1, Object o2){
        Edible thisfood = (Edible)o1;
        Edible otherfood = (Edible)o2;
        if(thisfood.getCalories() > otherfood.getCalories())
            return 1;
        else if (thisfood.getCalories() < otherfood.getCalories())
            return -1;
        else 
            return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

java arrays sorting comparator

3
推荐指数
1
解决办法
6641
查看次数

递归函数的运行时间T(n)

我正在尝试计算这个函数的T(n),我得出的是T(n)= T(n)+ T(n)+ O(1).我有两个递归调用函数g()的拖曳T(n),然后是所有常数时间操作(如加法)的O(1).我觉得我离开了所以任何帮助都会非常感激,我的数学背景也不太合理.

int g(int y) {
 if (y <= 0) {
  return 1;
 }
 else {
  return g(y - 1) + g(y - 2);
 }
}
Run Code Online (Sandbox Code Playgroud)

c++ recursion time fibonacci time-complexity

2
推荐指数
1
解决办法
2233
查看次数

计算二叉搜索树的高度

我一直在寻找如何计算二进制搜索树的高度,我的研究引导我进行以下实现.我仍然试图解决为什么它应该工作,但我也不确定为什么它不起作用.这是我的身高功能.

int BinaryTreeNode::height() const {
    int lefth = left->height();
    int righth = right->height();
    if(lefth > righth) {
        return lefth + 1;
    } else {
        return righth + 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是节点的我的类定义

class BinaryTreeNode {
  public:
    Data * nodeData;
    BinaryTreeNode * left;
    BinaryTreeNode * right;
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,程序会锁定并崩溃.我错过了一些明显的东西吗

编辑:为什么不这样做?

int BinaryTreeNode::height() const {
    int l = 0;
    if (left != NULL) {
        left->height();
    }
    int r = 0;
    if (right != NULL) {
        right->height();
    }
    if (l > r) {
        return l + …
Run Code Online (Sandbox Code Playgroud)

c++ binary-tree binary-search-tree

2
推荐指数
1
解决办法
1万
查看次数

迭代ArrayList并返回满足instanceof检查的对象的ArrayList

我的班级类型有问题.我有一个超级"可食用"和一个界面"多彩".并非所有可食用的物品都是五彩缤纷的,所以只有在某些可食用物品上才能实现.我正在尝试使用一个可食物项的ArrayList,循环它,并返回一个只包含彩色项目的新ArrayList.我现在收到的错误是

"ArrayList类型中的方法add(Colorful)不适用于参数(Edible)"

我怎样才能解决这个限制?

private ArrayList<Edible> elist;
private ArrayList<Colorful> clist;

public List<Colorful> getColorfulItems(){
    for(Edible x : elist)
        if(x instanceof Colorful){
            clist.add(x);
        }
    return clist;

    }
Run Code Online (Sandbox Code Playgroud)

java interface arraylist instanceof superclass

1
推荐指数
1
解决办法
1065
查看次数