Java中是否存在数据结构,其中一个ArrayList中的值可用于引用另一个ArrayList中的值?例如:
DataStructure<ArrayList<String>, ArrayList<String>> ds = new DataStructure<ArrayList<String>, ArrayList<String>>();
目的是我可以稍后遍历数据结构并获得两个值。例如:
for(int i=0; i<ds.size(); i++) {
String val1 = ds.get(i).getIndex1().getArrayListValueAt(i);
String val2 = ds.get(i).getIndex2().getArrayListValueAt(i);
}
我知道这看起来很奇怪,但我很难想象。
P.S。是否更容易确保两个数组列表中的索引相同,只是循环遍历一个,并且在另一个中获取引用相同的索引。例如:
int i = 0;
for(String value : values) {
String val1 = value;
String val2 = list2.get(i);
i++;
}
感谢。
答案 0 :(得分:1)
我认为,为了您的目的,Map
结构将更适合。它是一个字典,所以一个值是键,另一个是它的映射值。
Map<String, String> ds = new HashMap<>();
然后循环访问这些值,你可以使用它的keySet()
方法......
for (String k : ds.keySet()) {
String key = k;
String value = ds.get(k);
}
要向数据结构添加新的键/值对,请使用put(k, v)
方法。
ds.put("thisIsAKey", "thisIsTheValue");
答案 1 :(得分:1)
不确定我是否理解正确,听起来你想要一个列表,列表中的每个元素都会包含一对值。以下解决方案有帮助吗?
//包含两个值的类......
class MyPair {
String val1;
String val2;
}
//然后你的名单就是......
List<MyPair> myList = new ArrayList();
//循环列表时......就像下面的内容
for(MyPair mypair : myList) {
String val1 = mypair.val1;
String val2 = mypair.val2;
}
答案 2 :(得分:1)
您可以使用例如问题Map
,因为您可以在一个地方存储所有需要的收藏
Map<String, List<String>> map = new HashMap<>();
或例如:
Map<List<String>, List<String>> map = new HashMap<>();
然后你可以,例如String
作为关键,例如List<T>
为值
非常重要的是你用哪个对象作为键,因为它必须有equals / hashCode(如果你的对象必须是@Override
),接下来,当这个对象是不可变的时候很好