我需要将两个值保存到ArrayList的一个单元格中。马上,我正在浏览List并将值加起来。将数据存储到Arraylist最好用的是什么?地图? 我试过这样的事情:
List<Map<Integer, Integer>>
但有时我需要获得KEY,有时候需要VALUE,而且很难获得它们。 有简单的方法吗?
答案 0 :(得分:5)
如果您需要将两个值存储为一个单元,那么编写一个包含两个int
字段的类,并以相应的名称命名。例如,如果您的两个int
值表示x和y坐标,请编写一个类
class Point {
private int x;
private int y;
...
}
...然后使用ArrayList<Point>
。
答案 1 :(得分:1)
您是否只是想在数组列表的每个插槽中存储一个元组(即两个值)?
最简单的方法是要么有一个Tuple类(getFirst(),getSecond()) - 或者如果你想让它快速而又脏,那么存储一个大小为2的数组:
List<int[]> list = new ArrayList<int[]>();
list.add(new int[]{1, 2});
如果这不是您想要做的,请提供一些说明。
答案 2 :(得分:0)
如果您需要特定键的多个值,
Map<Integer, List<Integer>>
检查(Guava's Multimap)。您可以找到非常好的类或实用程序类进行转换。
如果这不适合你,你的定义并不是那么糟糕,但如果有单个key = value对,这可能会更好:
List<Map.Entry<Integer, Integer>>
Entry是内部映射中的简单内部类,它存储键/值对。 此外,如果您坚持使用您的方法(可能很复杂)或切换到Entry,则更改并不困难(如果您需要始终使用Keys或始终只需要值。
List<Entry<Integer, Integer>> values; // filled, initialised
// Getting only Keys
values.stream().map(Entry::getKey); // Java8 stuff - method reference
// Getting only Values
values.stream().map(Entry::getValue); // Java8 stuff - method reference
此处阅读method reference