2013-06-28 78 views
0

我想要的字符串從我的數據庫中獲取一個數組列表進行比較,並加入他們在一起.. 這裏是從我的數據庫收集數據的代碼..安卓:在數組列表比較字符串並將它們組合

public List<String> getData2List() { 
    String[] columns = new String[]{ KEY_ROWID, KEY_DATE, KEY_NAME, KEY_PRICE}; 
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, "1", null, null, null, null); 

    List<String> results = new ArrayList<String>(); 
    int iCM = c.getColumnIndex(KEY_DATE); 

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
     results.add(c.getString(iCM)); 
    } 
    return results; 
} 

,這裏是將它們放置在列表中的代碼..

Database info = new Database(this); 
    info.open();   

    List<String> dates = info.getData2List(); 
    lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dates)); 

    info.close(); 

這一切工作正常,但如果有多個條目這是相同的我結束了相同的列表事情(如果這是有道理的!?)。

例如: 如果列表出來像{"01/01/13", "02/01/13", "01/01/13", "03/02/13", "01/01/13"} 我試圖讓出落得像{"01/01/13", "02/01/13", "03/02/13"} 使同值的所有入口都被編譯成一個。

任何幫助或想法,非常感謝。

回答

0

只需使用Set而不是List。

HashSet將爲您提供唯一的字符串,而List可以包含相同的事件。

0

你爲什麼不使用HashSet<String>

例子:

List<String> dates = info.getData2List(); 
Set<String> uniqueDates = new HashSet<String>(dates); 
0

可以使用HashSet代替ArrayList中。

,因爲在你的情況,你將有以下優點

  1. 將兩個組會來得更容易些期運用addAll method
  2. 沒有機會,有重複的值
0

你需要一個集收藏類,基本上什麼「集」做的是,只存儲唯一值,如果你嘗試設置一個新的值已經存在集合它會忽略,確保你重寫equals和hashCode方法,以防萬一你AR Ë嘗試存儲自己的對象,看看文檔來了解它是如何工作的詳細信息...

http://docs.oracle.com/javase/6/docs/api/java/util/Set.html

商祺!