Java 如何正确地将元素放入不可变的二叉树中?

Java 如何正确地将元素放入不可变的二叉树中?,java,binary-tree,immutability,Java,Binary Tree,Immutability,我实现了一个不可变的二叉树,我想知道这是否是将元素放入其中的正确方式。提前谢谢 BinaryTree<Integer, Integer> treeMap = new BinaryTree<>(Integer::compare); treeMap = (BinaryTree<Integer, Integer>) treeMap.put(1, 1); treeMap = (BinaryTree<Integer, Integer>) treeMap.pu

我实现了一个不可变的二叉树,我想知道这是否是将元素放入其中的正确方式。提前谢谢

BinaryTree<Integer, Integer> treeMap = new BinaryTree<>(Integer::compare);
treeMap = (BinaryTree<Integer, Integer>) treeMap.put(1, 1);
treeMap = (BinaryTree<Integer, Integer>) treeMap.put(3, 2);
treeMap = (BinaryTree<Integer, Integer>) treeMap.put(2, 2);
binarytreetreemap=newbinarytree(Integer::compare);
treeMap=(二进制树)treeMap.put(1,1);
treeMap=(二进制树)treeMap.put(3,2);
treeMap=(二进制树)treeMap.put(2,2);

不,这似乎不是将元素放入inmmutable二叉树类的正确方法

您必须强制转换到BinaryTree,因为“.put”方法是来自Map的方法,所以您基本上使用的是Map对象

这似乎是一个从Map扩展而来的自定义类,我建议您检查类代码并搜索“addLefChild”和“addRightChild”之类的方法


我希望它能有所帮助。

不,这似乎不是将元素放入inmmutable二叉树类的正确方法

您必须强制转换到BinaryTree,因为“.put”方法是来自Map的方法,所以您基本上使用的是Map对象

这似乎是一个从Map扩展而来的自定义类,我建议您检查类代码并搜索“addLefChild”和“addRightChild”之类的方法


我希望它能有所帮助。

我正在转换为BinaryTree,因为put方法返回一个MapBasicly,是的。Immutable强制您在每次调用时恢复新实例。在这里,如果您的
BinaryTree
实现了
Map
来删除cast,那么您可以将
treeMap
声明为
Map
,这太愚蠢了<代码>映射。放置不返回
映射
。这只来自
BinaryTree
,但为什么返回
Map
,而不是
BinaryTree
?我正在强制转换为BinaryTree,因为put方法基本上返回了一个Map,是的。Immutable强制您在每次调用时恢复新实例。在这里,如果您的
BinaryTree
实现了
Map
来删除cast,那么您可以将
treeMap
声明为
Map
,这太愚蠢了<代码>映射。放置不返回
映射
。这只是来自
BinaryTree
,但为什么返回
Map
,而不是
BinaryTree
?我认为重要的一点是不可变的部分,我猜OP克隆了映射,并使用
put
将值放入新实例。如果您共享BinaryTree类的代码,也许我可以给你一个更好的答案。为什么?这是一节课吗?你从哪里得到的二进制树类?哪一个是它的包?试着搜索那个类的文档。好吧,你很有趣,但我想你不明白。。。我不是OP原创海报,我没有张贴问题!我认为重要的一点是不可变部分,我猜OP克隆了映射,并使用
put
将值放入新实例。如果您共享BinaryTree类的代码,也许我可以给您一个更好的答案。为什么?这是一节课吗?你从哪里得到的二进制树类?哪一个是它的包?试着搜索那个类的文档。好吧,你很有趣,但我想你不明白。。。我不是OP原创海报,我没有张贴问题!