论坛首页 Java企业应用论坛

一个简单的二维数组迭代

浏览 6146 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-10-10  
OO
   今天做项目,碰到一个二维数据迭代的问题,现封装成一个简单的方法。欢迎提出更好的建议,我是使用二维数组迭代的。
    使用的是模拟数据迭代,真实数据可以传入几个List(如果使用sql语句的group by,将很方便),还有一个表头就可以了,如果有不同的需求可以修改下面的方法。
/**
	 * 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;
	}
  • 大小: 576.1 KB
   发表时间:2007-10-11  
敢问lz个问题,什么叫做迭代?
有循环就叫迭代么?
0 请登录后投票
   发表时间:2007-10-13  
循环和迭代意思差不多,看习惯了,集合迭代叫的多一些。
0 请登录后投票
   发表时间:2008-01-20  
请用 遍历这个名词……不要把初学者弄糊涂。

另外对于list,用iterator遍历有时候更安全。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics