二维ArrayList

时间:2011-01-14 17:30:17

标签: java multidimensional-array

这是一个非常小的问题......我似乎在这里遇到了太多复杂问题:我必须实现像{42,someString}这样的索引结构。我试过了:

Object entry[][] = new Object[1][1];
ArrayList<Object> my_list = new ArrayList<Object>();

然而,这看起来很奇怪。是不是只有存储一些Integer和String的更简单的解决方案?我需要搜索字符串并返回整数...所以我认为Collections和ArrayLists是Java API中的好朋友。

9 个答案:

答案 0 :(得分:18)

解决方案:使用Map

嗯,你可能需要Map吗?

Map<String,Integer> map = new HashMap<String,Integer>();
map.put("Some String", 42);
// or, more correctly:
map.put("Some String", Integer.valueOf(42));

您可以使用

进行搜索
Integer result = map.get("Some String");

参考: Sun Java Tutorial&gt; Collection Trail&gt; Interfaces&gt; The Map Interface


修复OP的代码

顺便说一下,问题中的代码存在缺陷。如果你想使用一个对象数组列表(你不应该这样做),你可以这样做:

// single dimension, not multi-dimension
Object[] entry = new Object[]{"Some String",Integer.valueOf(42)};
// use interface as variable, not implementation type
// generic type is object array, not object
List<Object[]> myList = new ArrayList<Object[]>();
// add array to list
myList.add(entry);

现在你可以这样搜索:

for(final Object[] candidate : myList){
    if("Some String".equals(candidate[0])){
        System.out.println("Result: " + candidate[1]);
        break;
    }
}

但是,这仅供参考,请勿这样做。集合框架包含几乎所有标准案例的解决方案。使用地图。

答案 1 :(得分:2)

制作元组课程

 public Class IntegerStringTuple {
    private Integer number;
    private String string;

    //setters and getters etc.
 }

答案 2 :(得分:2)

如果我理解正确,你应该使用地图。

Map<Integer, String> map = new HashMap<Integer, String>();

map.put(42, "someString");
String str = map.get(42);

答案 3 :(得分:1)

只需使用HashMap

Map<String,Integer> map = new HashMap<String,Integer>();
map.put("foo",42);

答案 4 :(得分:0)

为什么不使用地图?

Map<String,Object>

答案 5 :(得分:0)

听起来你想要Map

答案 6 :(得分:0)

我会使用Map。地图用于存储键值对。

Map<String, Integer> map = new HashMap<String, Integer>();

答案 7 :(得分:0)

当您需要维护订单时,不能使用Map而不是ArrayList。

答案 8 :(得分:0)

    ArrayList arr1 = new ArrayList();
ArrayList arr2 = new ArrayList();
arr2.add(1);
arr2.add(2);
arr2.add(3);
arr1.add(arr2);

for(int i=0;i<arr1.size();i++){
    System.out.println("i:"+arr1.get(i));

    for(int j=0;j<((ArrayList)arr1.get(i)).size();j++){
    System.out.println("j:"+((ArrayList)arr1.get(i)).get(j));
    }
}

输出:i:[1,2,3]

j:1
j:2
j:3