如何实施以下数据?
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中可以使用哪种变量类型?
答案 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
,它包含两个整数。