所以我正在研究一个比较器问题,我无法弄清楚为什么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) 我正在尝试计算这个函数的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) 我一直在寻找如何计算二进制搜索树的高度,我的研究引导我进行以下实现.我仍然试图解决为什么它应该工作,但我也不确定为什么它不起作用.这是我的身高功能.
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) 我的班级类型有问题.我有一个超级"可食用"和一个界面"多彩".并非所有可食用的物品都是五彩缤纷的,所以只有在某些可食用物品上才能实现.我正在尝试使用一个可食物项的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) c++ ×2
java ×2
arraylist ×1
arrays ×1
binary-tree ×1
comparator ×1
fibonacci ×1
instanceof ×1
interface ×1
recursion ×1
sorting ×1
superclass ×1
time ×1