java tree 返回节点值_在Java中从TreeSet查找并返回元素 - java

博客讨论了在Java中使用TreeSet存储Node对象时如何正确实现查找功能。作者遇到的问题是findNode()函数返回了错误的Node,经过分析发现是因为两次调用了iterator.next()。解决方案是保存iterator.next()的结果,然后进行比较和返回。此外,还提到了Java字节码与机器码的区别、继承的替代方法以及BigInteger的序列化问题。
摘要由CSDN通过智能技术生成

我有以下节点类

Class Node {

private int id;

public int getId() {

return this.id;

}

}

然后创建带有节点的TreeSet。接下来,我想基于ID匹配查找并返回一个Node对象。但是,每次findNode()函数返回的是下一个到下一个Node而不是下一个。我了解这是因为两次调用了iterator.next()。如何仅调用一次即可检查id值以及返回对象引用。我还尝试通过创建一个临时的Object引用进行尝试,但结果还是一样。

Class NodeSet {

Set set = new TreeSet();

public Node findNode(int id) {

Iterator iterator = set.iterator();

while(iterator.hasNext()) {

if(iterator.next().getId() == id)

return iterator.next();

}

return null;

}

}

参考方案

Class NodeSet {

Set set = new TreeSet();

public Node findNode(int id) {

Iterator iterator = set.iterator();

while(iterator.hasNext()) {

Node node = iterator.next()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值