2014-03-25 129 views
0

我需要将两个值保存到ArrayList的一个单元格中。马上,我要通过列表并总结数值。将数据存储到Arraylist的最佳方法是什么?地图? 我想是这样的:Java - collections List <Map <Integer,Integer >>

List<Map<Integer, Integer>> 

但我有时我需要KEY,有时价值,这是相当困难的,让他们。 有更简单的方法吗?

+1

也许在Arraylist中保存一个整数? – ederollora

回答

5

如果您需要将两个值作为一个单位存储,那么编写一个类包含两个int字段,并进行适当的命名。例如,如果你的两个int值代表x和y坐标,写一个类

class Point { 
    private int x; 
    private int y; 
    ... 
} 

...然后使用ArrayList<Point>

1

你只是试图在数组列表的每个插槽中存储一个元组(即两个值)吗?

做到这一点

简单的办法是要么有一个元组类(getFirst(),getSecond()) - 或者,如果你希望它是快速和肮脏,存储大小为2的数组:

List<int[]> list = new ArrayList<int[]>(); 
list.add(new int[]{1, 2}); 

如果这不是你想要做的,请提供一些说明。

+0

这也是如何做到这一点,但恕我直言,创建新的类与getter和setter更好。感谢您的想法。 – user3414654

0

如果您需要为特定的键多个值,

Map<Integer, List<Integer>> 

检查(Guava's Multimap)。你可以找到相当不错的类或实用类来进行转换。

如果这是不适合你,你的定义并不坏,但如果有一个键值对,这可能是更好:

List<Map.Entry<Integer, Integer>> 

进入里面的地图简单的内部类,存储键/值对。 此外,如果你坚持你的方法(可能是复杂的),或者切换到入口,它不是很难改变(你总是需要密钥或总是只值情况。

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

相关问题