这是Main方法的一部分
System.out.println(node.getNode(3)); //in the end i have to get Optional[3]
System.out.println(node.getNode(7)); // in the end I have to get Optional[7]
我有方法
public Optional<Node> getNode(Integer value) {
return getNodeHelper(this, value);
}
public Optional<Node> getNodeHelper(Node note, Integer value) {
if (note.value.equals(value)) {
return Optional.of(note);
} else if (note.value < value) {
return getNodeHelper(note.right, value);
} else if (note.value < value) {
return getNodeHelper(note.left, value);
}
return Optional.empty();
}
接下来的问题是,我应该如何回归,最终得到可选[3]或可选[7]而不是一些可选[ee.ttu.iti0202.tree.Node@6615435c]
这条线我无法改变(大学的任务)
public Optional<Node> getNodeHelper(Node note, Integer value)
我在这个类中使用的变量是:
private Integer value;
Node left;
Node right;
返回类型Optional<Integer>
会更简单,然后我可以写回Optional.of(note.value)
,这就是全部,但我必须使用Optional<Node>
。
讲师建议使用覆盖,但我不明白该怎么做。
答案 0 :(得分:1)
在getNode()
方法地图中,返回的Optional<Node>
转换为Optional<Integer>
:
public Optional<Integer> getNode(Integer value) {
return getNodeHelper(this, value).map(Node::getValue);
}
答案 1 :(得分:0)
在Node类中可以编写toString()方法吗?并在其中返回Integer的值?
如果你编写了toString()方法,那么它将不会返回Optional [ee.ttu.iti0202.tree.Node@6615435c]值,而是返回你在toString()方法中返回的值。
//overriding the toString() method
public String toString(){
return value.toString();
}