我们有这样的声明: ArrayList<Map<String, Map<Integer, Object>>> parameterSet = new ArrayList<Map<String, Map<Integer, Object>>>();
也许可以这样定义它(我知道,这是错误的,请把它当作伪代码): List<List<String, Integer, Object>> parameterSet = new ...;
我敢肯定,有一个更好的方法来定义这样一个二维多类型的“数组”。
我们有这样的声明: ArrayList<Map<String, Map<Integer, Object>>> parameterSet = new ArrayList<Map<String, Map<Integer, Object>>>();
也许可以这样定义它(我知道,这是错误的,请把它当作伪代码): List<List<String, Integer, Object>> parameterSet = new ...;
我敢肯定,有一个更好的方法来定义这样一个二维多类型的“数组”。
2条答案
按热度按时间eqoofvh91#
这里的问题不是维度,而是“多类型”。
要么你为你的元素找到一个通用的超类型(最后的手段总是可以的)
Object
)或者创建一个 Package 器类,它可以容纳您需要的任何类型。有
Object
对象是快速且“简单”的,但是当您需要将元素强制转换为它们的实际类时,它可能会变得混乱。根据您希望在列表中保留的不同类型的数量,ifs可能会变得非常复杂:更精确的是 Package 器类
那么您的列表将只需要保存 Package 器类
要检查元素的类型,可以使用方便的方法:
bvjveswy2#
使用标准java集合api,您基本上可以做两件事:
使用
List
而不是ArrayList
在声明中:List<Map<String, Map<Integer, Object>>> parameterSet = new ArrayList<Map<String, Map<Integer, Object>>>();
使用菱形运算符(如果您使用的是java 7+):List<Map<String, Map<Integer, Object>>> parameterSet = new ArrayList<>();
不过,在本例中,我会考虑定义一个类来封装复杂的数据结构(map of map)。