站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题处理list中的内容,达到类似数据库中group by的效果,难道没人会吗?给点思路就散分

处理list中的内容,达到类似数据库中group by的效果,难道没人会吗?给点思路就散分

摘要: 处理list中的内容,达到类似数据库中group by的效果,难道没人会吗?给点思路就散分


date amount userid
-------- -------------- -------
20060918 1000777920. 3268
20060918 1000777728. 3268
20060918 1000777728. 3268
20060918 1000777920. 3268
20060918 7637600. 7718
20060919 66666600. 2092
20060920 58796000. 8753
20060920 58796000. 8753
以上是数据库中select到的数据,是按date排序的,以javaBean的形式存在一个Arraylist list中

date 用户数 平均金额
-------- ----------- ----------------
20060918 2 802149779.20
20060919 1 66666600.00
20060920 1 58796000.00
处理这个list,得到一个newlist,形式如上。
也就是类似数据库中的select date,count(userid),average(amount)...group by date的效果.
但是要用java编程处理得到.谁会教教我啊,路过的给个思路也行。我新手,谢谢了。


mark!


建一个类:ListMap(就是javabean了),类属性如下:Object key;Object value;
将你那个ArrayList的元素以date位key,amount为value设置到ListMap中,再将ListMap插入另一个ArrayList(al)中。使用时,遍历al,取出key相同的,并算其个数,再取value,求平均值。
OK了(可以在定义一个辅助类,类似ListMap有3个属性就好,便于基于不同要求排序)
这个可是个人经验,很宝贵啊。。呵呵~


有点问题.原纪录集中有重复记录.
偶想可以用整个记录作健,用amount做值,这样HashMap会自动消除重复记录.


楼上的,仔细看看楼主的需求吧


tonyyl()说得好象挺有用,但是这句"遍历al,取出key相同的,并算其个数,再取value,求平均值。"应该怎么实现?我基础不好,见谅。


说实话下面这个算法我一直搞不懂!
如果有一个数组a={2,3,2,1,3,2};
怎么编程可以获得结果:
"2有3个,
3有2个,
1有1个"
我自己想的一种方法是
先对数组排序,然后遍历,相同的就count++,遇到不同的就输出count。并且重置count为初始值,再继续往下遍历。但是这样看似简单的算法一写就一大堆代码,肯定是有更简单的方法,大家教教啊。


ArrayList ala=new ArrayList();
Iterator it=al.iterator();
String date="";
while(it.hasNext()){
ListMap lm=(ListMap)it.next();

Iterator it1=al.iterator();
Iterator it2=ala.iterator();
boolean flag=false;
while(it2.hasNext()){
if(((ArrayList)it2.next()).contains(lm)){
flag=true;
break;
}
}

if(flag==false){

al1=new ArrayList();

while(it1.hasNext()){
if((ListMap)it1.getKey().equals(lm.getKey())){
al1.add(it1);
}

}
ala.add(al1);
}

}
===================================
确实不太好处理,不过以上代码解决了相同的key值分组的功能,这样的话,ala中放的是
所有key值相同的ListMap的集合;你只需遍历ala中再遍历ala的元素,这样就可以分别处理日期相同的元素。应该很简单了。


谢谢tonyyl() 的热心帮助.thx.搞明白了.


↑返回目录
前一篇: 请问高手,我是不是该放下JAVA一段时间,还有JSF/MYFACES,ADF之类我感觉非常好,对比STRUTS,为什么这么少人学,我在这段时间一直找不到好的教
后一篇: 各位大侠,有谁熟悉EasyJF开源项目啊,,