Java 如何使用函数返回Iterable?
我有包含人名和年龄的对象。然后我构建了一个包含这些对象的哈希表。我自己编写了名为PeopleIterator和PeopleIterable的接口,以及该哈希表的迭代器实现。一切都很好 现在我必须在hashtable类中编写一个函数,返回另一个名为StringIterable的接口,该接口包含所有的人名 如果需要,我可以使用Collections框架和helper类中的数据结构,但我甚至不知道如何开始Java 如何使用函数返回Iterable?,java,return,iterable,Java,Return,Iterable,我有包含人名和年龄的对象。然后我构建了一个包含这些对象的哈希表。我自己编写了名为PeopleIterator和PeopleIterable的接口,以及该哈希表的迭代器实现。一切都很好 现在我必须在hashtable类中编写一个函数,返回另一个名为StringIterable的接口,该接口包含所有的人名 如果需要,我可以使用Collections框架和helper类中的数据结构,但我甚至不知道如何开始 公共类PeopleHashtable实现PeopleIterable{ 私人[]人; 公共Str
公共类PeopleHashtable实现PeopleIterable{
私人[]人;
公共StringIterable copyNames(){
}
}
公共接口StringIterable扩展了java.lang.Iterable{
StringIterator迭代器();
}
集合和列表是可编辑的。因此,可能只需返回map.keySet()之类的内容
相关:集合和列表是可编辑的。因此,可能只需返回map.keySet()之类的内容
相关:通过提供
next()
和hasNext()
的实现来实现迭代器接口
如果有其他元素要返回,hasNext()只返回true或false。它可以像检查当前数组索引到数组长度一样简单
next()只返回该索引处的元素并递增索引
这是一个示例模板
类MyClass实现迭代器{
字符串[]foo。。。;
私有整数索引;
公共迭代器迭代器(){
指数=0;
归还这个;
}
公共布尔hasNext(){
//你的代码
}
公共字符串next(){
//你的代码
}
}
通过提供next()
和hasNext()
的实现来实现迭代器接口
如果有其他元素要返回,hasNext()只返回true或false。它可以像检查当前数组索引到数组长度一样简单
next()只返回该索引处的元素并递增索引
这是一个示例模板
类MyClass实现迭代器{
字符串[]foo。。。;
私有整数索引;
公共迭代器迭代器(){
指数=0;
归还这个;
}
公共布尔hasNext(){
//你的代码
}
公共字符串next(){
//你的代码
}
}
我认为您误解了要求。我认为copyNames
实际上应该返回一个Iterator
而不是Iterable
。Iterable
是您调用iterator()
以获得iterator
的东西
我也同意约翰·克鲁格曼的评论是正确的。不宜声明自定义接口,如PeopleIterable
和StringIterable
。他们帮不上忙
无论如何,这里有一个简明的copyNames
(方法名的错误选择!)实现,假设它返回一个迭代器而不是Iterable
public Iterator<String> copyNames() {
return Arrays.stream(people).map(p -> p.getName()).iterator();
}
我认为你误解了要求。我认为copyNames
实际上应该返回一个Iterator
而不是Iterable
。Iterable
是您调用iterator()
以获得iterator
的东西
我也同意约翰·克鲁格曼的评论是正确的。不宜声明自定义接口,如PeopleIterable
和StringIterable
。他们帮不上忙
无论如何,这里有一个简明的copyNames
(方法名的错误选择!)实现,假设它返回一个迭代器而不是Iterable
public Iterator<String> copyNames() {
return Arrays.stream(people).map(p -> p.getName()).iterator();
}
为什么有这些自定义类?你可能不应该…为什么你有这么多自定义类?你可能不应该。。。