gpt4 book ai didi

java - 使用来自不同 Iterator/Iterable 的值创建 Iterable

转载 作者:行者123 更新时间:2023-12-02 11:14:00 27 4
gpt4 key购买 nike

我编写了一个 ADT 排序二叉树,其功能如下:

public Iterator<T> getInorderIterator(){
return new InorderIterator();
}

有效,按顺序遍历树。

然后我有一个字典类,它使用此类来存储 Entry<K, V> 类型的条目,以及一个返回所有条目的 Iterable 的函数。

public Iterable<Entry<K, V>> entries() {
//bST is BinarySortedTree
return () -> bST.getInorderIterator();
}

所有这些都按其应有的方式工作,但我想再编写 2 个函数,它们返回字典中键和值的 Iterable。我将如何从 entries() 返回的 Iterable 创建这些 Iterable或调用getInorderIterator()在二叉树上。

入门级:

public class Entry<K, V> {
public final K key;
public final V value;

public Entry(K key, V value) {
this.key = key;
this.value = value;
}

@Override
public boolean equals(Object o) {
if (o instanceof Entry) {
Entry other = (Entry)o;
return this.key.equals(other.key) && this.value.equals(other.value);
}
return false;
}
}

我无法在 BinaryTree 类中编写迭代器,因为它使用抽象数据类型。

最佳答案

只需使用标准库,您就可以做到

StreamSupport.stream(entries().spliterator(), false).map(entry -> entry.value).iterator()

用于值(键的明显变化)。我不知道Java 9或10是否有更简单的方法来做到这一点。

Apache Collection Commons

IteratorUtils.transformedIterator(bST.getInorderIterator(), entry -> entry.value)

关于java - 使用来自不同 Iterator/Iterable 的值创建 Iterable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50417245/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com