从地图内部检索arraylist

时间:2013-05-27 06:18:25

标签: java

我有一个查询,我有一个数组列表,其中包含不同的arraylist,如下所示

List<abcInfo> abcabcdata = new ArrayList<abcInfo>(); //first arraylist

abcInfo abcdeed = new abcInfo();
        abcdeed.setHeader("AAAA");
        abcdeed.setabcdata(getNormalFuturesFeedList()); //List<FuturesFeedObject> it contains another arraylist
        abcabcdata.add(abcdeed);

        abcInfo abcdgen= new abcInfo();
        abcdgen.setHeader("BBBB");
        abcdgen.setabcdata(getabcdgenList()); //this method reurn arraylist, it contains list inside another arraylist
        abcabcdata.add(abcdgen);

现在查询是我将最终列表放在地图中,因此reportmap本身就是一个arraylist,里面包含两个不同的arraylist

HashMap<String, Object> abcdata = new HashMap<String, Object>();
        abcdata.put("YTRE", abcabcdata);

最后我在基于密钥

的基础上回复了这个数组列表
List<abcInfo> listWDownNoticesInfo = (ArrayList<abcInfo>)abcdata.get("YTRE");

现在我的查询是,我必须统计那些标题为AAAA的人,以及那些标题为BBBB中的Payment的人数,请告知如何实现这一目标。

2 个答案:

答案 0 :(得分:1)

遍历List,检查每个元素并计算。请关注Java coding and naming conventions

List<abcInfo> listWDownNoticesInfo = (ArrayList<abcInfo>)abcdata.get("YTRE");
Iterator<abcInfo> itr = listWDownNoticesInfo .iterator();
int countA = 0;
int countB = 0;
while(itr.hasNext()) {
    abcInfo element = itr.next();
    if(element.getHeader().equals("AAAA")){
      countA++;
    }
    if(element.getHeader().equals("BBBB")){
      countB++;
    }
}

答案 1 :(得分:0)

int count1 = 0;
int count2 = 0;
for(abcInfo obj:listWDownNoticesInfo){

 if(obj.getHeader.equals("AAA")
   count1++;
 else  if(obj.getHeader.equals("BBB")
   count2++;

}

System.out.println("Header AAA count:"+count1);
System.out.println("Header BBB count:"+cpunt2);