gpt4 book ai didi

java - 如何将我的函数之一转换为 Iterable 函数?

转载 作者:行者123 更新时间:2023-12-01 15:40:15 26 4
gpt4 key购买 nike

我正在编写代码来实现不同的搜索功能,以解决农夫狼山羊卷心菜问题。我们获得了我们的主类和 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/

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