将int值与Java中的其他类型进行比较

时间:2016-12-16 03:24:37

标签: java hashtable

我目前正在开展一个项目,而且我现在已经陷入困境。基本上我试图弄清楚如何比较类型:键到类型:Int。从代码中,here.theKey和theKey2是Key类型,keyKey将key作为参数,获取哈希码,然后用于在BST中找到名为' here'的相同哈希码。我遇到的问题是,我无法弄清楚如何将here.theKey的值与作为int的Key1进行比较。

以下是方法:

    public Value get(Key key)
    {
        int theKey1 = hash(key);
        TreeNode here = Tree;
        while (here != null)
        {
            int theKey2=here.theKey;


            if(theKey1 < theKey2 )
            {
            here = here.left;
            }
            else if(theKey1>theKey2)
                here = here.right;
            else
            {
                return here.value;
            }
        }
        throw new IllegalArgumentException("Value associated with the key not found");
    }

我尝试使用compareTo,但由于theKey1是Int类型,因此出现错误。任何帮助或指导将不胜感激。

2 个答案:

答案 0 :(得分:0)

在这里散列密钥毫无意义。哈希表中的BST由所有具有相同哈希码的元素组成。您需要确保private List<RedditObject> objectList=new List<RedditObject>(); 并使用Key implements Comparable<Key>

答案 1 :(得分:-1)

你已经掌握了答案。在代码中,您希望类型为Key的引用仅使用hash。那么为什么不将所有Key转换成它们的哈希值并在需要时比较这些哈希值呢?

将while循环中的第一个表达式转换为int theKey2=hash(here.theKey);

我在代码中也看到了另一个问题。如果循环中ifelse if的条件求值为true,则在执行相应的块之后,控件将直接进入throw语句。因此,该方法将不会分支到根的子节点。因此,将continue语句作为ifelse if块的最后一行。