Android:比较数组列表中的字符串并将它们组合起来

时间:2013-06-28 22:42:38

标签: java android arraylist arrays

我想比较从我的数据库中获取的数组列表中的字符串并将它们连接在一起.. 这是从我的数据库中收集数据的代码..

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 个答案:

答案 0 :(得分:0)

只需使用Set而不是List。

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

答案 1 :(得分:0)

为什么不使用HashSet<String>

示例:

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

答案 2 :(得分:0)

您可以使用HashSet代替ArrayList。

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

  1. 加入两套将更容易使用addAll method
  2. 没有机会拥有重复值

答案 3 :(得分:0)

你需要一个Set集合类,基本上是“Set”的作用,只存储唯一值,如果你试图设置一个已存在于集合中的新值,它将忽略,确保你重写等于,和hashCode方法一样,如果你试图存储自己的对象,请查看文档以获取有关它如何工作的更多信息..

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

问候!