私は回避策を知っている奇妙な問題を抱えていますが、今回は配列リストでそれをやりたいと思っています。問題は次のとおりです。従業員のツリーがあります。従業員は単純なクラスです (以下は、この従業員のために働く従業員のリストです)。
class Employee
{
String name;
ArrayList<Employee> under = new ArrayList<Employee>();
//fire function
}
私の仕事は、従業員がいないすべての従業員を再帰的に解雇することです。カスタムメイドのリストデータ構造でこれを回避する方法は知っていますが、配列リストでそれを行いたいです。これまでの私のコードは次のとおりです。
public boolean Fire()
{
if (under.isEmpty())
return true;
else
{
for (int x = 0; x < under.size(); x ++)
{
if (under.get(x).Fire())
under.remove(x);
}
}
return false;
}
しかし、このコードの問題は、under.remove(x)を削除すると、under.size()が小さくなり、インデックスがめちゃくちゃになることです。under.remove(x)ごとにx = 0を設定しようとしましたが、正確には機能しませんでした。一人の従業員はまだ残っています。配列リスト構造のソリューションはありますか?