Java map list 解决复杂表格的数据问题
2015-08-28 12:04
591 查看
加入给你一个表 包含三个字段 让你做这样的表格怎么做呢?
并且根据模块名 和时间去重 展示一下表格数据
java客户端写了一个小dome 大家看下
所用到的bean
下面是运行的结果
思路首先遍历 模块名 因为模块名是横向遍历的 所以要单独做一个list
然后在遍历纵坐标,
并且根据模块名 和时间去重 展示一下表格数据
java客户端写了一个小dome 大家看下
public class bean { /**日期*/ private String fdate; /**点击率*/ private String ctr; /**模块名称*/ private String module; public String getFdate() { return fdate; } public void setFdate(String fdate) { this.fdate = fdate; } public String getCtr() { return ctr; } public void setCtr(String ctr) { this.ctr = ctr; } public String getModule() { return module; } public void setModule(String module) { this.module = module; } }
所用到的bean
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class test { public static void main(String[] args) { bean b=new bean(); b.setCtr("3.2"); b.setFdate("2015-08-26"); b.setModule("模块1"); bean c=new bean(); c.setCtr("3.012"); c.setFdate("2015-08-24"); c.setModule("模块三"); bean d=new bean(); d.setCtr("3.01"); d.setFdate("2015-08-26"); d.setModule("模块二"); bean a=new bean(); a.setCtr("6.5"); a.setFdate("2015-08-26"); a.setModule("模块5"); bean e=new bean(); e.setCtr("7.012"); e.setFdate("2015-08-25"); e.setModule("模块一"); bean f=new bean(); f.setCtr("7.012"); f.setFdate("2015-08-25"); f.setModule("模块一"); List<bean> list=new ArrayList<bean>(); list.add(a); list.add(d); list.add(b); list.add(c); list.add(e); list.add(f); Map<String,bean> map=new HashMap<String, bean>(); List<String> fdate=new ArrayList<String>(); List<String> module=new ArrayList<String>(); List<List<bean>> result =new ArrayList<List<bean>>(); for (int i = 0; i < list.size(); i++) { bean l=list.get(i); if(!module.contains(l.getModule())){ module.add(l.getModule()); } if(!fdate.contains(l.getFdate())){ fdate.add(l.getFdate()); } map.put(l.getModule()+":"+l.getFdate(), l); } for(String date:fdate){ List<bean> temp =new ArrayList< bean>(); for(String no:module){ if(map.containsKey(no+":"+date)){ temp.add(map.get(no+":"+date)); }else{ temp.add(new bean()); } } result.add(temp); } for(String name:module){ //遍历模块名 System.out.print("\t\t"+name+"\t"); } System.out.println(); int index=0; for(List<bean> x:result){ System.out.print(fdate.get(index)+":"); for(bean y:x){ System.out.print("\t\t"+y.getCtr()); } System.out.println("\n"); index++; } } }
下面是运行的结果
模块5 模块二 模块1 模块三 模块一 2015-08-26: 6.53.01 3.2null null 2015-08-24: nullnull null3.012 null 2015-08-25: nullnull nullnull 7.012
思路首先遍历 模块名 因为模块名是横向遍历的 所以要单独做一个list
然后在遍历纵坐标,
相关文章推荐
- 【java关键字-Interface】为什么接口中的属性和方法都默认为public
- J2EE-BaseService.java
- 【解决】SSH问题(四)Java.Lang.ClassNotFoundException: Org.Springframework.Transaction.TransactionException
- Spring 注入静态变量 解决方案
- JAVA实现把指定文件夹下的所有文件压缩成zip包
- J2EE-BaseDaoImpl.java
- 【解决】SSH问题(三)java.lang.ClassNotFoundException: org.quartz.impl.triggers.SimpleTriggerImpl
- Eclipse使用入门教程
- 《JSF教程》-02 JSF与Struts2、Springmvc的对比
- java集合类,详解
- java获取当前系统毫秒,纳秒
- eclipse + gcc 报错 Assignment to itself
- J2EE-BaseDao.java
- Java线程(八):锁对象Lock-同步问题更完美的处理方式
- 转 9个基于java的搜索引擎框架
- 精选30道Java笔试题解答
- java四个元注解的作用
- Java关键字synchronized详解
- spring resourceLoader 读取配置文件
- java怎么获取一天的开始时间和结束时间