2011-05-19 113 views
0


我有一个极其微小的问题,我似乎无法弄清楚。我试图从一个ArrayList>中提取基于类型值的数据,并将其放入另一个ArrayList中。问题是for循环只运行一次,在这种情况下,我需要它遍历整个数组,然后将数据放入unSuppressedData数组列表中。
下面是for循环: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提取数据的数组列表是我想要放置数据

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

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

但我需要这条线去车ck我的unSuppressdData是否有数据,如果没有,那么会将来自availData arraylist的数据添加到unSuppressedData数组列表中。

难道是我错写了这段代码?感谢有关这方面的任何见解。

+1

'unsuppressedData'的类型是什么?将hashtable传递给'contains'是非常不寻常的。 – 2011-05-19 05:21:33

+0

unsupprressedData是一个arraylist > – 2011-05-19 06:43:42

回答

0

这种事情的好集合类型是LinkedHashSet。因为它是一个集合,每个元素只能添加一次。作为一个散列,包含测试很快。被链接的结果集按迭代顺序进行迭代。

+0

嗯..心理解释进一步? – 2011-05-19 06:44:26

+0

[API文档](http://download.oracle.com/javase/1.5.0/docs/api/java/util/LinkedHashSet.html)可能会更好地描述它。基本上它就像一个HashSet,除了集合上的任何迭代都是以插入顺序进行的。 – karmakaze 2011-05-19 07:25:43

+0

我想要做的是从availData添加想要的数据到空的unSuppressedData arraylist。 LinkHashSet可以做到这一点? – 2011-05-19 08:34:22