ArrayList
のインスタンスがあり、タイプがContainer
で、型がString
のものがあります。 1つは国の「禁止品」(弦)のリストで、もう1つは船のコンテナのリストです。船は国を通過し、コンテナは禁止品目が検索されます。コンテナcontains
禁止品の場合、そのコンテナは削除/削除する必要があります。ArrayListで別のArrayListの値を検索する
public Customs(String country)
{
countryName = country;
bannedGoods = new ArrayList<String>();
}
public Ship(String n, double weight)
{
emptyWeight = totalWeight = weight;
name = n;
containers = new ArrayList<Container>();
}
私はすでにコンテナを削除する船舶クラスのメソッドを持っています。
public void removeContainer(int i)
{
if(i >= 0 && i < containers.size()) {
Container r = containers.remove(i);
totalWeight = totalWeight - r.getWeight();
}
}
私はコンテナの船をinspect
するメソッドを作成しようとしています。私は2つのfor-loopsをそれぞれの配列に使いたいのですが、正しくできないようです!誰かが2つのループを使って配列を検索するのを手助けできますか?さらに、ループ内でイテレータ(具体的にはremove
関数)を使用する必要があると思いますが、それは私にとっても紛らわしいものです。イテレータremove
メソッドは、私がすでにクラス船で書いたメソッドを置き換える必要がありますか?ここで私が持っているものです。
public void inspect(Ship ship)
{
for (String good : bannedGoods) {
for (String con : containers) {
if (con.contains(good) {
container.remove();
}
}
}
そして、ここでは、イテレータで私の試みです:
for(String good : bannedGoods) {
Iterator<String> it = ship.containers.iterator();
while (it.hasNext())
if (ship.contains(good))
it.remove();
}
'containers'は' Container'オブジェクトではなく、文字列のリストです。また 'inspect'はおそらく' Customs'のインスタンスメソッドなので、 'bannedGoods'リストに直接アクセスできます。 – nbrooks
OPはこれを最初の行として書いています: '同じタイプのStringの2つの異なるarrayListを持っています ' –
2番目のリストは' Container'内にあるようです。船のコンストラクタ 'containers = new ArrayList();'を参照してください。 –
nbrooks