加入给你一个表 包含三个字段 让你做这样的表格怎么做呢?
并且根据模块名 和时间去重 展示一下表格数据
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
然后在遍历纵坐标,