avatar
h*g
1
A. Given
interface Iterator {
T next();
boolean hasNext();
}
interface Predicate {
boolean accept(T t);
}
Implement a method that creates an "accept" iterator that returns items
accepted by the passedin pred variable.
Iterator conditionIterator(Iterator input, Predicate pred) {
}
这题撒意思?需要设计模式的背景知识吗?
avatar
p*2
2
怎么又是这道?
avatar
p*2
3
class NewIterator
{
Iterator input;
Predicate pred;
T next;
boolean valid;
public NewIterator(Iterator _input, Predicate _pred)
{
input=_input;
pred=_pred;
}
public boolean hasNext()
{
if(!valid)
{
while(input.hasNext())
{
T t=input.next();
if(pred.accept(t))
{
next=t;
valid=true;
break;
}
}
}
return valid;
}
public next()
{
T t=null;
if(!valid)
{
hasNext();
}

if(valid)
{
valid=false;
t=next;
}
return t;
}
}
avatar
l*8
4
class ConditionIterater : public Iterator
{
public:
ConditionIterater(Iterator input, Predicate pred)
: m_Input(input), m_Pred(pred), m_HasNext(false)
{
}
T Next()
{
T returnValue = m_Value;
finxNext();
return returnValue;
}
bools hasNext()
{
return m_HasNext;
}
private:
void findNext()
{
m_HasNext = false;
while(m_Input.hasNext())
{
m_Value = m_Input.Next();
if (m_Pred.accept(m_Value) {
m_HasNext = true;
break;
}
}
}
private:
Iterator m_Input;
Predicate m_Pred;
bool m_HasNext;
T m_Value;
}

【在 h*****g 的大作中提到】
: A. Given
: interface Iterator {
: T next();
: boolean hasNext();
: }
: interface Predicate {
: boolean accept(T t);
: }
: Implement a method that creates an "accept" iterator that returns items
: accepted by the passedin pred variable.

avatar
p*2
5

如果一开始调hasNext return false?

【在 l*********8 的大作中提到】
: class ConditionIterater : public Iterator
: {
: public:
: ConditionIterater(Iterator input, Predicate pred)
: : m_Input(input), m_Pred(pred), m_HasNext(false)
: {
: }
: T Next()
: {
: T returnValue = m_Value;

avatar
l*8
6
恩,看了北京二哥的程序,发现的确应该设置个isValid标志

【在 l*********8 的大作中提到】
: class ConditionIterater : public Iterator
: {
: public:
: ConditionIterater(Iterator input, Predicate pred)
: : m_Input(input), m_Pred(pred), m_HasNext(false)
: {
: }
: T Next()
: {
: T returnValue = m_Value;

avatar
l*8
7
本想在constructor里面调用 void findNext()的,忘了。

【在 p*****2 的大作中提到】
:
: 如果一开始调hasNext return false?

avatar
l*8
8
根据peking2的程序和建议改一下:)
class ConditionIterater : public Iterator
{
public:
ConditionIterater(Iterator input, Predicate pred)
: m_Input(input), m_Pred(pred), m_HasNext(false)
{
findNext();
}
T Next()
{
if (m_HasNext==false)
throw exception;
T returnValue = m_Value;
fintNext();
return returnValue;
}
inline bools hasNext()
{
return m_HasNext;
}
private:
void findNext()
{
m_HasNext = false;
while(m_Input.hasNext())
{
m_Value = m_Input.Next();
if (m_Pred.accept(m_Value) {
m_HasNext = true;
break;
}
}
}
private:
Iterator m_Input;
Predicate m_Pred;
bool m_HasNext;
T m_Value;
}
avatar
a*g
9
这题是考Java么?
avatar
p*2
10

不一定。上边不是有C++的吗?

【在 a***g 的大作中提到】
: 这题是考Java么?
avatar
a*g
11
这题是考Java么?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。