Java中的Arraylist中的Arraylist中的ArrayList

时间:2019-03-20 06:52:11

标签: java generics collections

实现可在Arraylists和Integers中存储任何级别的ArrayList的ArrayList的最佳方法是什么。

List<List<Integer>> list = ArrayList<List>();

仅允许列表中的列表最多包含2级,并且不允许混合使用Intergers和ArrayLists。

这是Python中一些简单易用的东西。而且它的数据结构很笨拙,但不幸的是,编码测试需要这些东西。

2 个答案:

答案 0 :(得分:1)

  

实现可以存储任何内容的ArrayList的最佳方法是什么   Arraylist和Integer中的ArrayList级别

您拥有List<Object>作为Generics are compile-time properties的唯一选项。因此,您不能根据运行时数据动态更改/确定类型

因此,我相信最好的唯一选择List<Object>。但是,you may need to cast many times使用该列表。

答案 1 :(得分:0)

以比List<Object>更类型安全的方式执行此操作的唯一方法是定义联​​合类型:

class IntegerOrList {
  final Integer i;
  final List<IntegerOrList> list;

  // Constructors to ensure that only one of i and list is present.
  IntegerOrList (Integer i) {
    this.i = i; this.list = null;
  }

  IntegerOrList (List<IntegerOrList> list) {
    this.i = null; this.list = list;
  }

  // Getters.
}

如果您尝试访问缺少的那个,则应该抛出该异常或以其他方式处理。

然后创建以下列表:

List<IntegerOrList> list = new ArrayList<>();