Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用函数返回Iterable?_Java_Return_Iterable - Fatal编程技术网

Java 如何使用函数返回Iterable?

Java 如何使用函数返回Iterable?,java,return,iterable,Java,Return,Iterable,我有包含人名和年龄的对象。然后我构建了一个包含这些对象的哈希表。我自己编写了名为PeopleIterator和PeopleIterable的接口,以及该哈希表的迭代器实现。一切都很好 现在我必须在hashtable类中编写一个函数,返回另一个名为StringIterable的接口,该接口包含所有的人名 如果需要,我可以使用Collections框架和helper类中的数据结构,但我甚至不知道如何开始 公共类PeopleHashtable实现PeopleIterable{ 私人[]人; 公共Str

我有包含人名和年龄的对象。然后我构建了一个包含这些对象的哈希表。我自己编写了名为PeopleIterator和PeopleIterable的接口,以及该哈希表的迭代器实现。一切都很好

现在我必须在hashtable类中编写一个函数,返回另一个名为StringIterable的接口,该接口包含所有的人名

如果需要,我可以使用Collections框架和helper类中的数据结构,但我甚至不知道如何开始

公共类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();
}

为什么有这些自定义类?你可能不应该…为什么你有这么多自定义类?你可能不应该。。。