java - java中列表打印列表

标签 java list

我有以下列表:

[10, 20, [44, 55], [[777, 888]]]

我想像下面这样打印(Index.Value):

0.10
1.20
2.0.44
2.1.55
3.0.0.777
3.0.1.888
public static void main(String a[]) {
    List<Object> list1 = new ArrayList<>();
    list1.add(10);
    list1.add(20);

    List<Object> list2 = new ArrayList<>();
    list2.add(44);
    list2.add(55);

    List<Object> list3 = new ArrayList<>();
    List<Object> list4 = new ArrayList<>();
    list4.add(777);
    list4.add(888);

    list3.add(list4);

    list1.add(list2);
    list1.add(list3);

    System.out.println(list1);
    print(list1, "");
}

static void print(List<Object> list, String s) {
    for (int i = 0; i < list.size(); i++) {
        if (list.get(i) instanceof Integer) {
            System.out.println(s + i + "." + list.get(i));
        } else {
            s = s + i + ".";
            print((List<Object>)list.get(i),s);
        }
    }
}

上面的代码打印如下:

0.10
1.20
2.0.44
2.1.55
2.3.0.0.777
2.3.0.1.888

我知道我的代码有问题。我们还有其他方法来处理这个问题吗? 谁能帮帮我吗?

最佳答案

当您处理外部列表的第三个元素时,您将附加“2”。到 s 并将结果分配给 s

然后,当您处理外部列表的第四个元素时,您将附加“3”。到 s 并将结果分配给 s,所以现在 s 包含“2.3”。而不是所需的“3”。应传递给递归调用。

如果您不向 s 分配任何内容,而是将 s + i + "." 传递给递归调用,则可以避免这种情况。

改变

s = s + i + ".";
print((List<Object>)list.get(i),s);

print((List<Object>)list.get(i),s + i + ".");

现在输出将是:

0.10
1.20
2.0.44
2.1.55
3.0.0.777
3.0.1.888

完整的更正方法:

static void print(List<Object> list, String s) {
    for (int i = 0; i < list.size(); i++) {
        if (list.get(i) instanceof Integer) {
            System.out.println(s + i + "." + list.get(i));
        } else {
            print((List<Object>)list.get(i),s + i + ".");
        }
    }
}

关于java - java中列表打印列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59966979/

相关文章:

java - 特定类的异常处理/映射

java - 使用 Spring MVC 的 REST web 服务在发布 JSON 时返回 null

java - Jar 文件找不到 com.mysql.jdbc 驱动程序

c - 在c中链接链表

java - Android Java 从列表中删除项目,过滤列表

c++ - 复制函数链表c++

java - Hibernate 中的 session.get() 和 session.byId().load() 有什么区别?

java - 如何在 android studio 应用程序中存储整数变量并检索它。

python - 在 python 中创建列表的最佳和/或最快方法

python - 找到许多文件中最大的版本号文件?