作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写代码来实现不同的搜索功能,以解决农夫狼山羊卷心菜问题。我们获得了我们的主类和 FarmerWolfGoatCabbage 类实现的几个类。 AbstractSolver 类之一包含行
Iterable<AState> moves = s.getPossibleMoves();
for (AState move : moves)
if (!closed.contains(move))
addState(move);
这是我的 FarmerWolfGoatCabbage 类。我基本上想翻译以下函数
public DepthFirstSolver getPossibleMoves1(){
DepthFirstSolver moves = null;
//use getOpposite() and addIfSafe
FarmerWolfGoatState fwgsParent = new FarmerWolfGoatState();
FarmerWolfGoatState fwgsChild = null;
int hash;
// the farmer's current position before crossing the river
Side farmerCurrent = this.farmer;
if(this.wolf == farmerCurrent){
fwgsChild = new FarmerWolfGoatState(this, this.getOpposite(this.farmer),
this.getOpposite(this.wolf), this.goat, this.cabbage);
hash = fwgsChild.hashCode();
if(addIfSafe(hash))
moves.addState(fwgsChild);
System.out.println("W");
}
if(this.cabbage == farmerCurrent){
fwgsChild = new FarmerWolfGoatState(this, this.getOpposite(this.farmer),
this.wolf, this.goat, this.getOpposite(this.cabbage));
hash = fwgsChild.hashCode();
if(addIfSafe(hash))
moves.addState(fwgsChild);
System.out.println("C");
}
if(this.goat == farmerCurrent){
fwgsChild = new FarmerWolfGoatState(this, this.getOpposite(this.farmer),
this.wolf, this.getOpposite(this.goat), this.cabbage);
hash = fwgsChild.hashCode();
fwgsChild.getPosition();
//
if (fwgsChild == null)
System.out.println("NULL");
if(addIfSafe(hash))
//moves.addState(fwgsChild);
System.out.println("G");
}
return moves;
}
进入类似的函数,但具有 Iterable 返回类型
public Iterable<AState> getPossibleMoves()
{
}
最佳答案
Iterable
是一个接口(interface):
http://download.oracle.com/javase/6/docs/api/java/lang/Iterable.html
您的 FirstDepthSolver
类需要实现该接口(interface),因为这是您从 getPossibleMoves1()
返回的接口(interface)。随后,这意味着您将必须实现 Iterator(或者存储您需要在已提供迭代器的 java Collection 中进行迭代的任何内容,然后返回它)。
我怀疑除了解决手头的问题之外,这就是作业试图让你做的事情。
这个问题应该有一些帮助:How can I implement the Iterable interface?
关于java - 如何将我的函数之一转换为 Iterable<T> 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8172156/
我是一名优秀的程序员,十分优秀!