在动态数组中存储字符串+整数对?

时间:2013-06-04 09:20:06

标签: java

我需要在数组中存储少量数据。也许几十个。我只需要追加,不需要删除,不需要搜索。然后我将通过索引访问。每对都是String值和Integer值。 Java提供了很多这样的方法,这是类似的常见做法吗?两个阵列?数组中的类?

我知道如何在JavaScript中执行此操作:

var data = []
data.push(['Some name', 100])

//somewhere else
data.push(['Other name', 200])

但我需要一个Java解决方案

谢谢。

3 个答案:

答案 0 :(得分:4)

例如,您可以创建Pair类(或使用apache commons中的实现)在List中存储两个元素。

List<Pair<String, Integer>> l = new ArrayList<>();
l.add(new Pair<String, Integer>("Some name", 100));

请参阅Generic pair classJava Pair<T,N> class implementation,了解如何实施Pair类。

答案 1 :(得分:3)

这实际上取决于,但总的来说,我认为最好创建一个对象并使用它的列表:

public class MyObject {
    private String myString;
    private Integer myInt;
    // getters setters
}

并使用:

List<MyObject> = new ArrayList<>();

(您也可以使用Pair

如果字符串(或整数)是唯一的,则可以使用Map,但更难获得插入索引。

另一个选项只是两个列表,一个用于字符串,一个用于整数,并在两个列表中使用相同的索引。

答案 2 :(得分:0)

我按照上面的建议使用POJO,因为这有助于为POJO的所有属性定义getter和setter,通过重写equals和hashCode方法来比较对象。通过使用getter和setter,您可以知道存储在哪个字段中的内容,并且比较可以根据您的要求为您提供对象的排序。因此,这种方法更加清晰和可扩展,以满足新的要求。此外,当您使用顺序键放置数据时,每个Pojo实例都可以放在List中(如果需要按排序顺序。