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"} ,那么相同值的所有条目都已编译为一个。

非常感谢任何帮助或想法。

4

4 回答 4

0

只需使用 Set 而不是 List。

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

于 2013-06-28T22:45:18.790 回答
0

你为什么不直接使用HashSet<String>

例子:

List<String> dates = info.getData2List();
Set<String> uniqueDates = new HashSet<String>(dates);
于 2013-06-28T22:46:13.063 回答
0

您可以使用HashSet代替 ArrayList。

因为在您的情况下,您将具有以下优势

  1. 使用addAll 方法加入两个集合会更容易
  2. 没有机会有重复的值
于 2013-06-28T22:46:33.887 回答
0

您需要一个 Set 集合类,基本上“Set”所做的是,仅存储唯一值,如果您尝试设置集合中已经存在的新值,它将忽略,确保您覆盖 equals 和 hashCode 方法同样,如果您尝试存储自己的对象,请查看文档以获取有关其工作原理的更多信息..

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

问候!

于 2013-06-28T22:47:24.163 回答