摘自: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文件中读取数据并存储到一维和二维数组中。数组在C++中是基本的数据结构,而指针则为动态操作提供了便利。以下是一些关键知识...
二维数组在编程中是一种非常重要的数据结构,尤其在易语言中,它被广泛应用于各种算法和数据处理场景。本文将详细讲解易语言中二维数组的赋值方法,并通过实例源码帮助你深入理解这一概念。 二维数组,顾名思义,是...
在C#编程中,二维数组是一种常见的数据结构,用于存储多列或多行的数据。当处理这类数据时,可能需要对数组中的元素进行排序,以便于分析或展示。本篇文章将详细探讨如何在C#中实现对二维数组的排序,特别关注如何...
在C语言中,二维数组是处理表格数据的一种基础方式,它本质上是一组一维数组的集合,每个一维数组代表数组的一行。本编程练习旨在加深对C语言中二维数组、指针和函数的理解,通过实际操作提升编程技能。下面我们将...
### 二维数组冒泡排序详解 #### 一、引言 冒泡排序是一种简单的排序算法,在数据处理领域有着广泛的应用。对于一维数组而言,冒泡排序实现起来相对容易;然而,当涉及到二维数组时,排序的过程就变得复杂起来。...
在LabVIEW编程环境中,二维数组是一种常见的数据结构,用于存储多行多列的数据。本教程将深入探讨如何在LabVIEW中有效地读取二维数组的所有数据,这对于数据分析、处理和可视化至关重要。 首先,让我们理解二维数组...
例如,如果你有一个C++函数接收二维数组并返回二维数组,你可以这样在Java中定义: ```java public interface MyDLL extends Library { // 定义C++函数原型 int processArray(int[][] input, int[][] output); } ...
本案例"使用Excel两个一维数组构造二维数组.rar"重点讲解如何通过Excel的数组公式,将两个一维数组合并成一个二维数组,并进行加法运算。 首先,我们有两个一维数组,它们可能代表不同的数据系列或者是在不同维度上...
在C#编程中,一维数组到二维数组的转换是一个常见的操作,特别是在处理表格数据或者在Windows Forms(WinForm)应用程序中创建控件布局时。本篇将详细讲解如何进行这种转换以及如何保存二维数组的数据。 首先,让...
在C++编程中,二维数组是一种非常常见的数据结构,它被广泛用于表示表格或矩阵等数据。本篇文章将深入探讨如何将二维数组作为函数的形参进行传递,以实现特定的功能,例如本例中的二维数组求和。我们将讨论两种主要...
在LabVIEW中,二维数组是数据处理和分析中常见的数据结构。它由多个一维数组按行或列堆叠而成,可以表示表格或其他多维数据。本教程将深入探讨如何在LabVIEW中对二维数组进行排序,这在处理实验数据、进行算法分析或...
在易语言中,二维数组是数组的一种变体,它可以理解为多个一维数组的组合,常用于处理表格或者矩阵类的数据。本篇文章将深入探讨易语言中的二维数组赋值以及相关源码解析。 首先,了解易语言的基本语法对于学习二维...
在Excel VBA编程中,二维数组是一个非常重要的概念,它允许我们存储和处理多行多列的数据,类似于电子表格中的工作表。本教程主要聚焦于如何在VBA中对已声明或已初始化的二维数组进行重定义,以适应不同的数据需求。...
在C#编程中,动态二维数组是一种非常重要的数据结构,特别是在处理不定数量的数据或需要灵活扩展数据表的情况下。本文将深入探讨动态二维数组的概念、创建方法、操作技巧以及其在实际编程中的应用。 动态二维数组,...
// 二维数组冒泡排序 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语言中二维数组作为函数参数来传递的三种方法 在C语言中,二维数组作为函数参数来传递是非常常见的操作。但是,如何正确地传递二维数组作为函数参数却是许多初学者和开发者经常混淆的地方。今天,我们将详细介绍...
在Java编程中,将二维数组转换为JSON对象是一项常见的任务,特别是在处理表格数据或结构化信息时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它...
在IT领域,尤其是在Web开发中,二维数组常常用于存储复杂的数据结构,比如表格数据或层级关系数据。在本例中,我们关注的是如何利用JQuery处理一个变长的二维数组,以便于提交多个相关联的数据。这样的场景常见于...
一维数组转二维数组