【问题标题】:loop arraylist of array in java [closed]java中数组的循环arraylist [关闭]
【发布时间】:2012-12-26 15:28:27
【问题描述】:
  • 我想循环遍历字符串数组的arraylist。

  • 这些字符串数组只有两个元素。在循环内部,我想比较每个数组的这两个元素。

  • 我想以一种干净简单的方式来做这件事(如果可能的话,避免使用经典的 for、迭代器类等 - 我知道如何做到这一点,但我正在寻找一种更干净的方式-.

  • 我更喜欢 for-each 循环(或 for + ":")

  • 我附上一个示例代码,向您展示我想要做什么。

这样做的最佳方法是什么?

ArrayList<String[]> myLst = new ArrayList<String[]>();

// the array of strings has two elements

public String getSecondField(String query)
{
    for (String[] binArray : myLst)
    {
        if (binArray[0].equals(query))
        {
            return binArray[1];
        }
    }
    return "";
}

【问题讨论】:

  • 为什么不只是一个Map&lt;String, String&gt;
  • 我非常喜欢你的方法。如果没有发布更好的解决方案,我可能会坚持下去:)
  • 请停止将“i”编辑成问题。从字面上看,没有“i”在英语中不大写的情况。如果您要编辑帖子以修复其语法,请正确执行。当提到自己时,“I”总是大写。

标签: java string for-loop arraylist foreach


【解决方案1】:

而不是两个元素的数组,因为每个数组的所有第一个元素都是唯一的,所以使用Map&lt;String, String&gt;。这样,您的代码将变为:

public String getSecondField(String query)
{
    String ret = map.get(query);
    return ret != null ? ret : "";
}

【讨论】:

  • 有时我也需要检索索引,像这样: public int obtenerPosPaises(String palabra) { int i = 0; for (String[] pais : mtxPaises) { if (pais[1].equals(palabra)) { return i; } 我++; } 返回 -1; }
  • 使用LinkedHashMap 然后,它保证插入顺序,并遍历地图的.values()
  • 非常干净,非常感谢!
猜你喜欢
  • 2018-07-10
  • 1970-01-01
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 2018-03-07
  • 2019-01-03
  • 2014-02-23
相关资源
最近更新 更多