Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从具有相同类别的对象的arraylist中提取元素?_Java_Android_Sqlite_Collections - Fatal编程技术网

Java 如何从具有相同类别的对象的arraylist中提取元素?

Java 如何从具有相同类别的对象的arraylist中提取元素?,java,android,sqlite,collections,Java,Android,Sqlite,Collections,我在sqlite数据库中有一个表,它包含五个不同的列,如下所示 CATEGORY NOTE DATE PRICE MODE travel delhi 10/5/2011 800 cash food daily 9/5/2011 500 cash travel goa 12/5/2011 1000 cash 数据库中的值由运行

我在sqlite数据库中有一个表,它包含五个不同的列,如下所示

CATEGORY    NOTE     DATE         PRICE       MODE
travel      delhi    10/5/2011    800          cash
food        daily    9/5/2011     500          cash
travel      goa       12/5/2011    1000         cash

数据库中的值由运行时从用户添加。毕竟,我通过内容提供者检索它,并将其存储到ArrayList中,并显示在listview中。但现在我想按类别显示它意味着我想在下面显示一个类别,它的所有任务,然后是下一个类别&它的任务如下。Item是一个类,它包含所有列名作为数据成员&其setter和getter。任何帮助都将不胜感激。

您可以使用分类列上的
分组依据
子句根据分类对结果进行分组

使用番石榴的方法。它将创建一个多重映射,即以类别作为键,以项目列表作为值的映射

如果您不能使用番石榴,请按照此方法操作:

  • 创建一个
    地图
    ,其中键是类别
  • 遍历项目列表,并将每个项目放置在地图中
下面是一个例子:

Map<String, List<Item>> itemsByCategory = new LinkedHashMap<String, List<Item>>();
for (Item item : theListOfItems) {
    String category = item.getCategory();
    List<Item> itemsOfCategory = itemsByCategory.get(category);
    if (itemsOfCategory == null) {
        itemsOfCategory = new ArrayList<Item>();
        itemsByCategory.put(category, itemsOfCategory);
    }
    itemsOfCategory.add(item);
}

for (Map.Entry<String, List<Item>> entry : itemsByCategory.entrySet()) {
    System.out.println("Category " + entry.getKey() + ":");
    for (Item item : entry.getValue()) {
        System.out.println("    Item : " + item);
    }
}
Map itemsByCategory=newlinkedhashmap();
对于(项目:列表项){
字符串类别=item.getCategory();
List itemsOfCategory=itemsByCategory.get(category);
if(itemsOfCategory==null){
itemsOfCategory=new ArrayList();
itemsByCategory.put(类别,itemsOfCategory);
}
itemsOfCategory.添加(项目);
}
对于(Map.Entry:itemsByCategory.entrySet()){
System.out.println(“Category”+entry.getKey()+”:”;
对于(项:entry.getValue()){
系统输出打印项次(“项:+项);
}
}

首先创建映射类-

class CategoryMapper
{
 String categoryName;
 ArrayList<User> usersForThisCategory;
}
类类别映射器
{
字符串类别名称;
ArrayList用户用于分类;
}
现在,从数据库中检索数据并添加到相应的类别映射器中


您可以使用另一个数组,其中包含类别的数量和属于该类别的项目。

谢谢回复。这里的用户是什么,请您解释一下。谢谢回复。在我看来,第二种方法比第一种方法更容易理解,你能给出一些代码或教程的例子吗?这正是我想要的解决方案。非常感谢,这对我来说很好。。。。。。。。。。。。!!!谢谢你的回复。但是我的查询不包含GROUPBY子句。我正在使用resolver.query(EXPENSE\u URI,新字符串[]{EXPENSE\u CATEGORY,EXPENSE\u DATE,EXPENSE\u PRICE},null,null,EXPENSE\u CATEGORY);用于从数据库中获取值。