【问题标题】:Referencing the values in one array list to values in another将一个数组列表中的值引用到另一个数组列表中的值
【发布时间】:2017-01-26 15:53:06
【问题描述】:

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);

}

我知道这看起来很奇怪,但我很难想象。

附:是否更容易确保两个数组列表中的索引相同并且只循环遍历一个,并且在抓取一个时引用另一个中的相同索引。例如:

int i = 0;
for(String value : values) {
      String val1 = value;
      String val2 = list2.get(i);
      i++;
}

谢谢。

【问题讨论】:

  • 您在寻找地图数据类型吗?其中包含一个 Key 和一个相应的值。 API 链接:docs.oracle.com/javase/7/docs/api/java/util/Map.html
  • 我找到了 HashMap,但是当我观看教程时,它说要从哈希映射中获取值,我会使用这样的东西。得到(“val1”);它会返回 val2。但我需要同时获得这两个值。这是使用正确的结构,但我接近错误了吗?或者..
  • 那么您想根据集合中的索引获取一对值吗?
  • 您是否在寻找包含两个字符串的索引数据结构?如果是这样,那么你可以有一个 String[2] 的数组/列表
  • Zircon 是的,Stormcloud 也是如此

标签: java data-structures


【解决方案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");

【讨论】:

    【解决方案2】:

    不确定我是否理解正确,听起来您想要一个列表,列表中的每个元素都将包含一对值。以下解决方案有帮助吗?

    // 一个包含两个值的类...

    class MyPair {
        String val1;
        String val2;
    }
    

    // 然后你列出的是..

    List<MyPair> myList = new ArrayList();
    

    // 当你循环你的列表时......它会像下面的东西

    for(MyPair mypair : myList) {
         String val1 = mypair.val1;
         String val2 = mypair.val2;
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用例如Map 解决您的问题,因为您可以将所有需要的集合存储在一个地方

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

      或例如:

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

      然后你可以例如String 作为键,例如List&lt;T&gt; 作为值

      非常重要的是你使用哪个对象作为键,因为它必须有 equals/hashCode(如果是你的对象,它必须是 @Override),然后,当这个对象不可变时很好

      【讨论】:

        猜你喜欢
        • 2016-11-27
        • 2013-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-20
        • 2017-11-18
        • 1970-01-01
        • 2013-11-10
        相关资源
        最近更新 更多