我有一个包含自我引用对象ArrayList的对象。该ArrayList中的每个Object包含相同的结构,最多n度。现在,我必须在结构中搜索一个字符串,如果找到,则必须一直打印到根。这是一个样本

MyClass {
string name;
ArrayList<MyClass> subClasses;
}

什么数据结构将是最好的选择。还是我不需要使用它。

亲切的问候

最佳答案

您可以在MyClass上使用如下方法

public List<String> findPathOfName(String nameToFind) {
    List<String> result = new ArrayList<String>();

    if (nameToFind.equals(name)) {
      result.add(name);
    } else {
      for (MyClass aSubClass: subClasses) {
        List<String> subResult = aSubClass.findPathOfName(nameToFind);
        if (!subResult.isEmpty()) {
           result.add(name);
           result.addAll(subResult);
           break;
        }
      }
    }

    return result;
}

基本上是递归地遍历结构并找到路径。返回的列表将包含诸如personA / personB / etc之类的路径。

关于java - 在对象数组中搜索字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15985006/

10-11 22:36
查看更多