【问题标题】:For-loop not working the way i want it toFor-loop 没有按我想要的方式工作
【发布时间】:2011-05-19 05:10:36
【问题描述】:


我有一个非常小的问题,我似乎无法弄清楚。我正在尝试根据 ArrayList> 中的值类型提取数据并将其放入另一个 ArrayList。问题是 for 循环只运行一次,在这种情况下,我需要它遍历整个数组,然后将数据放入 unSuppressedData 数组列表中。
下面是for循环:

  for (int x = 0; x < suppressedStatus.length; x++) {
    for (int i = 0; i < availData.size(); i++) {
        Hashtable<String,String> checkAvail = availData.get(i);
        String itemStatus = checkAvail.get("loanStatus");
        if (unSuppressedData.contains(checkAvail) == false) {
            if (!(itemStatus.equals(suppressedStatus[x]))) {
                Log.d("Item Status", itemStatus);
                Log.d("Suppressed Status", suppressedStatus[x]);
                unSuppressedData.add(checkAvail);
                //break;
                }
            }
        }
    }

suppressedStatus 是一个字符串数组
availData 是我要从中提取数据的数组列表
unSuppressedData 是我要放置数据的数组列表

我相信它只运行一次是由于这行代码:

 if (unSuppressedData.contains(checkAvail) == false) {

但我需要在这一行检查我的 unSuppressdData 是否有数据,如果没有,则将来自availData arraylist 的数据添加到 unSuppressedData arraylist 中。

会不会是我写错了这段代码?感谢您对此提出的任何见解。

【问题讨论】:

  • unsuppressedData 的类型是什么?将哈希表传递给 contains 是很不寻常的。
  • unsuppressedData 是一个数组列表>

标签: android for-loop arraylist hashtable


【解决方案1】:

LinkedHashSet 是这类事情的一个很好的集合类型。因为它是一个集合,所以每个元素只能添加一次。作为一个哈希,包含测试很快。被“链接”后,结果集将按插入顺序进行迭代。

【讨论】:

  • 嗯.. 介意进一步解释吗?
  • API docs 可能会更好地描述它。基本上它与 HashSet 完全一样,只是对集合的任何迭代都是按插入顺序进行的。
  • 我想要做的是将需要的数据从availData添加到unSuppressedData arraylist,它是空的。 LinkHashSet 能做到吗?
  • 是的,对 unSuppressedData 使用 LinkedHashSet 并且您不需要包含检查,因为它不存储重复项。完成此集合的迭代后,元素首先插入的顺序将相同。
  • 谢谢。通过使用你的建议,我不再有任何重复的元素。但我还有一个问题。如何从linkedhashset 中检索arraylist 的哈希表值?然后我怎样才能将数据放入文本视图中?请帮忙。我非常接近清除这个障碍。
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 2021-12-15
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
  • 1970-01-01
  • 2018-07-08
相关资源
最近更新 更多