请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么字数统计不对呢

public static void main(String[] args) {
System.out.println(“Pride and Prejudice”);
ArrayList words1 = new ArrayList<>();
FileOperation.readFile(“pride-and-prejudice.txt”, words1);
System.out.println(“Total words:” + words1.size());

    BSTSet<String> set1 = new BSTSet<>();
    for(String word:words1){
        set1.add(word);
    }
    System.out.println("Total different words:" + set1.getSize());
}

结果:
Pride and Prejudice
Total words:125901
Total different words:125901

正在回答 回答被采纳积分+3

2回答

weixin_慕哥8353170 2020-05-15 22:58:48

你的问题不知道有没有解决,我也遇到相同的问题,原因是:

老师在第6章第3节中的添加元素操作是这样的:

if(e.compareTo(node.e) < 0)
add(node.left, e);
else //e.compareTo(node.e) > 0
add(node.right, e);

我的理解是  在元素相等的时候也做了添加元素操作,更改为下面代码,就不会在相等时进行添加元素操作:

if (e.compareTo(node.e) < 0) {
    node.left = add(node.left, e);
} else if (e.compareTo(node.e) > 0) {//e.compareTo(node.e) >0
    node.right = add(node.right, e);
}

不知道我的理解正不正确。

0 回复 有任何疑惑可以回复我~
  • 在相等时不会重复添加,因为递归总会运行到:if(e.equals(node.e)) return; 尝试添加相等的元素,跟踪一下试试看?
    回复 有任何疑惑可以回复我~ 2020-05-16 06:05:21
  • 您在第六章第4节有更新写法,如果为e和node.e相等,什么都不做,我的意思是题主有可能没有注意到这个条件而造成了这个问题
    回复 有任何疑惑可以回复我~ 2020-05-16 17:39:47
liuyubobobo 2020-03-04 16:37:43

我测试了一下,课程的官方代码没有问题。请你尝试下载课程的官方代码,在你的环境下运行,看是否有同样的问题?如果没有,请仔细调试比对,看自己的代码哪里有问题。


尤其是看一下 add 函数中 size 的维护是否正确,因为你的结果显示,插入的单词即使已经在 BST 中,你的 size 也做了 ++。


本小节课程官方代码传送门:https://git.imooc.com/coding-207/coding-207/src/master/07-Set-and-Map/01-Set-Basics-and-BSTSet 


加油!:)

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信