2011-05-19 64 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