您如何比较对象与可比对象?

问题描述 投票:2回答:1

我有一个类分配,我需要将目标排序到二叉树节点中,在给定根的情况下,我需要将其与根进行比较,如果目标小于该值,则将其作为左子对象根,如果目标大于根的值,则将该目标作为正确的子代。

我必须使用给定的方法标头和参数,并且我已经这样写了代码:

   public static boolean find(TreeNode t, Comparable x)
   {
      TreeNode p = t;
      if(t == null)
         return false;
      while(p != null)
      {
         if(p.getValue() == x)
            return true;
         else if(p.getValue() < x)
            p = p.getLeft();
         else
            p = p.getRight();
      }
      return false;
   }

返回此错误:

BinarySearchTree.java:109:错误:二进制运算符'

我也尝试过compareTo方法,方法是尝试类似]的方法>

if(p.getValue().compareTo(x) == 0)
   return true;

返回下面的错误:

BinarySearchTree.java:107:错误:找不到符号if(p.getValue()。compareTo(x))^符号:方法compareTo(Comparable)位置:类对象

如何解决此错误?我尝试搜索此问题,但这并不是特别有用。

更新-TreeNode类:

class TreeNode 
{
   private Object value; 
   private TreeNode left, right;
   
   public TreeNode(Object initValue)
   { 
      value = initValue; 
      left = null; 
      right = null; 
   }
   
   public TreeNode(Object initValue, TreeNode initLeft, TreeNode initRight)
   { 
      value = initValue; 
      left = initLeft; 
      right = initRight; 
   }
   
   public Object getValue()
   { 
      return value; 
   }
   
   public TreeNode getLeft() 
   { 
      return left; 
   }
   
   public TreeNode getRight() 
   { 
      return right; 
   }
   
   public void setValue(Object theNewValue) 
   { 
      value = theNewValue; 
   }
   
   public void setLeft(TreeNode theNewLeft) 
   { 
      left = theNewLeft;
   }
   
   public void setRight(TreeNode theNewRight)
   { 
      right = theNewRight;
   }
}

我有一个类分配,需要将目标排序到二叉树节点中,在给定根的情况下,我需要将其与根进行比较,如果目标小于。,则将目标作为左子对象。 。

java tree binary-tree binary-search-tree comparable
1个回答
0
投票

好像x是您的Comparable界面。您应该在此参数上调用compareTo方法,然后将结果与0比较。可比Javadoc有一些用法示例。 compareTo函数返回:

负整数,零或正整数,因为此对象小于,等于或大于指定的对象。

© www.soinside.com 2019 - 2024. All rights reserved.