将一个数组列表中的值引用到另一个

时间:2017-01-26 15:53:06

标签: java data-structures

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++;
}

感谢。

3 个答案:

答案 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),接下来,当这个对象是不可变的时候很好