摘自:http://www.iteye.com/topic/130908
package cn.tap2008.commons.core.util; /** * @author Tang Anping * @since Oct 10, 2007 * 报表类 */ public class ReportBean { /** * x轴的值 */ private String x; /** * y轴的值 */ private String y; /** * 统计值 */ private String value; /** * @param x * @param y * @param value */ public ReportBean(String x, String y, String value) { super(); this.x = x; this.y = y; this.value = value; } /** * @return the x */ public String getX() { return x; } /** * @param x the x to set */ public void setX(String x) { this.x = x; } /** * @return the y */ public String getY() { return y; } /** * @param y the y to set */ public void setY(String y) { this.y = y; } /** * @return the value */ public String getValue() { return value; } /** * @param value the value to set */ public void setValue(String value) { this.value = value; } }
package cn.tap2008.commons.core.util; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; /** * @author Tang Anping * @since Oct 10, 2007 * @since 0.1 */ public class ReportUtil { /** * 2007, 北京, 2 * 2007, 上海, 2 * 2006, 广州, 6 * 2006, 南京, 7 * 2005, 湖南, 8 * 2005, 湖北, 9 * 2004, 天津, 3 * 2004, 海南, 7 * @return */ public Map getReportMap() { Map reportMap = new LinkedHashMap(); Set xset = new LinkedHashSet(); xset.add("2007"); xset.add("2006"); xset.add("2005"); xset.add("2004"); Set yset = new LinkedHashSet(); yset.add("北京"); yset.add("上海"); yset.add("广州"); yset.add("南京"); yset.add("湖南"); yset.add("湖北"); yset.add("天津"); yset.add("海南"); List reportList = new ArrayList(); //x, y, 统计 reportList.add(new ReportBean("2007", "北京", "2")); reportList.add(new ReportBean("2007", "上海", "2")); reportList.add(new ReportBean("2006", "广州", "6")); reportList.add(new ReportBean("2006", "南京", "7")); reportList.add(new ReportBean("2005", "湖南", "8")); reportList.add(new ReportBean("2005", "湖北", "9")); reportList.add(new ReportBean("2004", "天津", "3")); reportList.add(new ReportBean("2004", "海南", "7")); HashMap y_map = new HashMap(); y_map.put(yset, reportList); reportMap.put(xset, y_map); //System.out.println(xset + "=========" + y_map); return reportMap; } /** * 2007, 北京, 2 * 2007, 上海, 2 * 2006, 广州, 6 * 2006, 南京, 7 * 2005, 湖南, 8 * 2005, 湖北, 9 * 2004, 天津, 3 * 2004, 海南, 7 * @param tableHead 纵轴的表头 * @param xlist 横轴 * @param ylist 纵轴 * @param reportList 记录数据 * @return */ public String[][] getReportArray(String tableHead, List xlist, List ylist, List reportList) { int x_len = xlist.size(); int y_len = ylist.size(); //第一维数组为y轴,第二维数组为x轴 String[][] reportArray = new String[y_len + 2][x_len + 2]; reportArray[0][0] = tableHead; reportArray[0][x_len + 1] = "总计"; for(int x = 1; x < x_len + 1; x++) { reportArray[0][x] = (String) xlist.get(x - 1); } for(int y = 1; y < y_len + 1; y++) { reportArray[y][0] = (String) ylist.get(y - 1); } int report_len = reportList.size(); double amount = 0; double[] y_amount = new double[x_len + 2]; for(int y = 1; y < y_len + 1; y++) { double x_count = 0; for(int x = 1; x < x_len + 1; x++) { for(int k = 0; k < report_len; k++) { ReportBean reportBean = (ReportBean) reportList.get(k); if(reportBean.getX().equals(xlist.get(x - 1)) && reportBean.getY().equals(ylist.get(y - 1))) { String value = reportBean.getValue(); reportArray[y][x] = reportBean.getValue(); x_count += Double.parseDouble(value); amount += Double.parseDouble(value); } } //如果不存在数据,则为0 if(reportArray[y][x] == null) { reportArray[y][x] = "0"; } y_amount[x] += Double.parseDouble(reportArray[y][x]); reportArray[y_len + 1][x] = y_amount[x] + ""; } reportArray[y][x_len + 1] = x_count + ""; } reportArray[y_len + 1][0] = "合计"; reportArray[y_len + 1][x_len + 1] = amount + ""; return reportArray; } public String printTable(String[][] reportArray) { StringBuffer tableBuffer = new StringBuffer("<table border='1'>"); for(int i = 0; i < reportArray.length; i++) { tableBuffer.append("<tr>"); for(int j = 0; j < reportArray[i].length; j++) { if(reportArray[i][j] == null) { reportArray[i][j] = "0"; } tableBuffer.append("<td align='center'>").append(reportArray[i][j]).append("</td>"); } tableBuffer.append("</tr>"); } tableBuffer.append("</table>"); return tableBuffer.toString(); } public static void main(String[] args) { List xlist = new ArrayList(); xlist.add("2007"); xlist.add("2006"); xlist.add("2005"); xlist.add("2004"); List ylist = new LinkedList(); ylist.add("北京"); ylist.add("上海"); ylist.add("广州"); ylist.add("南京"); ylist.add("湖南"); ylist.add("湖北"); ylist.add("天津"); ylist.add("海南"); List reportList = new ArrayList(); //x, y, 统计 reportList.add(new ReportBean("2007", "北京", "2")); reportList.add(new ReportBean("2007", "上海", "2")); reportList.add(new ReportBean("2006", "广州", "6")); reportList.add(new ReportBean("2006", "南京", "7")); reportList.add(new ReportBean("2005", "湖南", "8")); reportList.add(new ReportBean("2005", "湖北", "9")); reportList.add(new ReportBean("2004", "天津", "3")); reportList.add(new ReportBean("2004", "海南", "7")); String[][] reportArray = new ReportUtil().getReportArray("分类", xlist, ylist, reportList); System.out.println(new ReportUtil().printTable(reportArray)); for(int i = 0; i < reportArray.length; i++) { for(int j = 0; j < reportArray[i].length; j++) { System.out.print(reportArray[i][j] + " "); } System.out.println(); } } }
相关推荐
用C++语音实现一维数组二维数组写入txt,从txt中读取数据存到一维数组、二维数组,数组用指针表示
// 二维数组冒泡排序 public static void main(String[] args) { int i=0, j=0, temp = 0; int[][] nums1 = { { 34, 1, 22, 5 }, { 28, 98, 15, 32 }, { 33, -5, 17, 41 } }; int rows = nums1.length; //二维...
一维数组转二维数组
C# json 一维数组 和 二维数组的转换 写的非常详细,对大家有帮助
VB.NET二维数组快速排序(更新) 'OldArrays(),为排序二维数组;NewArrays(),为存放结果数组,SortColumnsOrOrders(),传递排序参数数组,偶数个为排序列号,奇数为升降序,0为升序,1为降序;FieldRow,是否有字段行...
实现一个“可变长二维数组”,这个二维数组的行数可由输入决定,每行的元素个数仍可由输入决定。每个数组元素值都是1. 执行结果如下: 请输入行数: 5 请输入第1行的元素个数: 20 请输入第2行的元素个数: 34 请...
CStringArray二维数组CStringArray二维数组CStringArray二维数组CStringArray二维数组CStringArray二维数组CStringArray二维数组CStringArray二维数组CStringArray二维数组
用二维数组实现二维矩阵的加法和乘法 #include #define SIZE 4 void addMatrix(int [ ][SIZE], int [ ][SIZE], int [ ][SIZE]); void mulMatrix(int [ ][SIZE], int [ ][SIZE], int [ ][SIZE]); void ...
将labview内二维数组方便的转化为一维数组使用
通过vue解析表头合并的表格,后台返回的数据格式为[{name:aa,list:[{value:100}]}] 通过table与v-for组合循环数据达到目的。 vue 表头合并数据解析 vue 二维数组解析 vue 二维list解析 vue table+v-for
介绍了数组、一维数组、二维数组、多维数组及其应用示例
有下面这样的一个二维表,请将其使用二维数组输出 姓名 语文 数学 英语 张三 80 70 90 李四 40 50 90 王五 90 98 100 题解 与几位童鞋交流了一下发现他们都把汉字单独拿出来了,只用数组存储的成绩,...
用 for 循环产生 4 行 100 列二维数组,数组成员如下: 1,2,3………100 100,99,98………..1 6,7,8………….105 105,104,103………6 从这个数组中提取出 2 行 50 列的二维数组,成员如下: 50,49,48……...
二维数组的声明和使用ppt介绍很快可以上手练习和理解用的
C语言程序设计-求出二维数组周边元素之和,作为函数值返回;二维数组的值在主函数中赋予;
labview 删除二维数组全空行
C++关于信息学竞赛 二维数组23个源文件试题 供初学者练习 #include using namespace std; main() { int a[6][6],max,max_y,min,min_x; for(int i=1;i;i++) for(int j=1;j;j++) cin>>a[i][j]; for(int i...
使用Excel两个一维数组构造二维数组.rar,本例所示的Sheet1工作表已经定义了两个一维数组,利用公式对这连个数组进行加法运算,可以生成一个新的二维数组。
c#调用c++DLL,DLL里是二维数组 ,c#里如何调用二维数组
二维数组基本操作的编程实现 要求: 二维数组基本操作的编程实现(2学时,验证型),掌握数组的建立、读取数据、压缩存储等基本操作的编程实现,存储结构可以在顺序结构或链接结构中任选,也可以全部实现。也鼓励...