我无法尝试启动一个arraylist,其中第一列我想成为一个字符串,第二列是一个自定义对象。
例如column [0]
为String
,column[1]
为Integer
。惯例创建像int[][]
或String[][]
所使用的那些多维arraylist似乎不起作用:(我欢迎任何帮助。此时我不认为这是java允许的。我可以让它只适用于一种类型的对象,但它不是我想要的。谢谢!
答案 0 :(得分:2)
你需要一个arraylist吗?您可以创建Map<String, Object>
或Map<String, Integer>
或任何您需要的内容..
答案 1 :(得分:1)
确实如此,但你削弱/消除了类型检查:
Map myMap<String>, Integer> myData = new HashMap<String, Integer>();
现在,myMap.keySet()
可以检索字符串列表,myMap.values()
可以检索值。其中每个都返回Set,您可以使用以下代码轻松转换为List:
List<String> strings = new ArrayList<String>(myMap.keySet()); // get your strings
List<Integer> numbers = new ArrayList<Integer>(myMap.values(); // get your numbers
祝你好运,如果遇到问题,请发表评论。
答案 2 :(得分:1)
数组适用于某种特定类型的事物 - 无论是Object
还是String
还是int
。尽管您正在为它们添加多个维度,但它们仍然只保留一种类型的信息。
您希望拥有的是两个对象之间的mapping。这允许您执行以下操作:
这是一个例子。假设您的自定义对象为Cat
,并且您希望将所有者的名称映射到特定的Cat
。您创建了Map的新实例。
Map<String, Cat> catOwners = new HashMap<>();
然后你可以把元素放进去......
catOwners.put("Jamie", new Cat("Tycho"));
...并相对轻松地检索它们。
Cat currentCat = catOwners.get("Jamie"); // gets Jamie's cat
如果确实想要,您甚至可以使用随Map
s提供的Map.Entry
对象进行迭代:
for(Map.Entry<String, Cat> element : catOwners.entrySet()) {
System.out.println(element.getKey()
+ " owns " + element.getValue().getName());
}
答案 3 :(得分:0)
您可以使用通用Object
类型,并相应地进行投射。