Java - 集合列表<map <integer,integer>&gt; </map <integer,integer>

时间:2014-03-25 22:28:08

标签: java collections arraylist map

我需要将两个值保存到ArrayList的一个单元格中。马上,我正在浏览List并将值加起来。将数据存储到Arraylist最好用的是什么?地图? 我试过这样的事情:

List<Map<Integer, Integer>>

但有时我需要获得KEY,有时候需要VALUE,而且很难获得它们。 有简单的方法吗?

3 个答案:

答案 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