我在尝试启动一个 arraylist 时遇到了麻烦,我想在其中的第一列是一个字符串,而第二列是一个自定义对象。
例如column [0]
beString
和column[1]
be Integer
。创建多维数组列表的约定尝试,如那些使用的int[][]
或String[][]
似乎不起作用的:(我欢迎任何帮助。在这一点上,我认为它不是java允许的。我可以让它只适用于一种类型对象,但这不是我想要的。谢谢!
我在尝试启动一个 arraylist 时遇到了麻烦,我想在其中的第一列是一个字符串,而第二列是一个自定义对象。
例如column [0]
beString
和column[1]
be Integer
。创建多维数组列表的约定尝试,如那些使用的int[][]
或String[][]
似乎不起作用的:(我欢迎任何帮助。在这一点上,我认为它不是java允许的。我可以让它只适用于一种类型对象,但这不是我想要的。谢谢!
你需要一个数组列表吗?你可以创建一个Map<String, Object>
或Map<String, Integer>
或任何你需要的东西..
当然可以,但是您削弱/消除了类型检查:
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
祝你好运,如果您遇到问题,请发表评论。
数组适用于一种特定类型的事物- 无论是它们Object
还是String
或int
。尽管您向它们添加了多个维度,但它们仍然只保存一种类型的信息。
你宁愿拥有的是两个对象之间的映射。这允许您执行以下操作:
这是一个例子。假设您的自定义对象是 a 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.Entry
想要,你甚至可以使用所有Map
s提供的对象来迭代它们:
for(Map.Entry<String, Cat> element : catOwners.entrySet()) {
System.out.println(element.getKey()
+ " owns " + element.getValue().getName());
}
您可以做的是使用泛型Object
类型,并相应地进行转换。