java - 在对象数组中搜索字符串

标签 java algorithm

我有一个包含自引用对象 ArrayList 的对象。 ArrayList 中的每个对象都包含最多 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/等的路径。

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

相关文章:

java - 这个序列化错误是什么意思,我该如何防止它?

java - ImageButton 的图像未按预期更改

c++ - 按字符拆分字符串

java - 如何为有向网络图中的节点分配权重并计算有效节点权重

algorithm - Kadane 算法中的动态规划方面

java - Spring 模拟 junit 测试使用 spring-security 3.2.0.RC1 版本抛出 NullPointerException

java - Java 8 的新 Java Date Time API 是否负责 DST?

java - (Java) 如何解析具有多种可能格式的坐标字符串,并将它们转换为整数?

javascript - 如何在单独的行中打印每个单词。除第一个单词外,每个单词都大写

algorithm - 求解递归 T(n) = 2T(sqrt(n))