来自功能背景,我在Java中寻找等效的不可变单链表。
不可变单链表让我可以自由地定义许多具有共同尾的列表。例如,如果我有list = [1,2,3]
,然后我要创建两个新列表:
first = [10 | list]
second = [15 | list]
我没有抄列表。在内部看起来更像这样:
first -> 10 -> 1 -> 2 -> 3 -> null
second -> 15 /|
我查看了Guava Lists,但是我找不到关于实现细节的信息。据我所知,这是一个双链表,所以有效的前置操作是不可能的(请纠正我,如果我错了)。
你试过Functional Java吗?还有一个类似的问题,你可以用这个算法从double中生成单列表
试试Vavr,它是开源的,所以你可以看到内部实现