两个键在android中有一个值

时间:2011-09-22 09:18:35

标签: java list

如何实施以下数据?

somelisttype <int>obj ;

obj 0,0 => val0
obj 0,1 => val1
obj 0,2 => val2
obj 1,0 => val8
obj 2,0 => val9
obj 2,1 => val10

0,0 ; 0,1是键(或以其他方式表示行索引或列索引。)

我想拥有以下功能..

obj 0.add(val11) == obj 0,3 => val11
obj 3.add(val12) == obj 3,0 => val12

obj 2.length => 2
obj 3.length => 1

obj 0,2 => val2

ValXX =&gt;是值而不是对象(将是整数)

我不想创建2d数组,因为我不知道总obj或个体obj0的长度,obj1

在android中可以使用哪种变量类型?

3 个答案:

答案 0 :(得分:1)

List<List<Integer>>是什么?

你无法避免将泛型类型作为对象,但是从Integer转换为int是隐式的,你会发现使用上有任何不同。

<强>更新

好的,这是:

MyList l = new MyList();
l.set(0, 0, 1);
l.set(1, 0, 2);
l.set(1, 1, 3);

Log.d("TAG", l.get(0, 0) + " " + l.get(1, 0) + " " + l.get(1, 1));

这里是实现(当然你必须确保使用的索引是正确的,所以当0尚未设置时你不能添加索引1):

class MyList {

    private List<List<Integer>> mList = new ArrayList<List<Integer>>();

    public void set(int i, int k, int value) {
        List<Integer> list;

        if (i == mList.size()) {
            list = new ArrayList<Integer>();
            mList.add(i, list);
        } else {
            list = mList.get(i);
        }

        if (k == list.size()) {
            list.add(value);
        } else {
            list.set(k, value);
        }
    }

    public int get(int i, int k) {
        return mList.get(i).get(k);
    }
}

答案 1 :(得分:0)

您可以使用基于键值对的HashMap。

你会发现一个简单的例如here

答案 2 :(得分:0)

这实际上是一个基本的Java问题,与Android没什么关系。您可能希望更改标记以获得更好的答案。一个List List<Integer>可能会做,除非您需要按键/ get键,在这种情况下,您需要一个带有复合键的HashMap,它包含两个整数。