`
tap2008
  • 浏览: 51712 次
  • 来自: 湖南株洲
社区版块
存档分类
最新评论

一个简单的二维数组迭代

    博客分类:
  • Java
SQL 
阅读更多
   今天做项目,碰到一个二维数据迭代的问题,现封装成一个简单的方法。欢迎提出更好的建议,我是使用二维数组迭代的。
    使用的是模拟数据迭代,真实数据可以传入几个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
分享到:
评论
4 楼 dwangel 2008-01-20  
请用 遍历这个名词……不要把初学者弄糊涂。

另外对于list,用iterator遍历有时候更安全。
3 楼 tap2008 2007-10-13  
循环和迭代意思差不多,看习惯了,集合迭代叫的多一些。
2 楼 Godlikeme 2007-10-11  
敢问lz个问题,什么叫做迭代?
有循环就叫迭代么?
1 楼 jdk2006 2007-10-11  
恩,不错留下脚鸭。。。

相关推荐

    javascript构造二维数组

    这样创建的二维数组是一个3x3的矩阵,每个子数组包含3个元素。 2. **使用`Array.from()`和`map()`构造二维数组** `Array.from()`方法可以从可迭代对象或类数组对象创建一个新的数组实例。配合`map()`函数,我们...

    DES加密算法 C实现 二维数组

    例如,可以定义一个二维数组来表示64位的数据块和56位的密钥,通过数组下标来表示位。在实现F函数时,可以创建多个一维数组来表示S-Box和P-Box,然后通过索引来完成替换和置换操作。 以下是一个简化版的C代码实现...

    用二C语言求二维数组鞍点

    上述代码中,`findSaddlePoint`函数接收一个3x3的二维数组作为参数,通过两个嵌套循环,`i`代表行,`j`代表列。在内部循环中,我们维护`rowMin`来记录当前行的最小值,`colMax`来记录当前列的最大值。如果找到一个...

    Labview应用技术 二维数组的创建示例(课堂实训).docx

    1. **不使用嵌套循环**:通常,填充二维数组时会使用嵌套的FOR循环,一个循环控制行,另一个控制列。但也可以通过一次循环和数组函数实现。例如,可以先创建一个一维数组,填充随机数,然后使用“数组到矩阵”函数...

    用C语言求二维数组鞍点

    二维数组鞍点在数学和计算机科学中是一个特定的概念,它是指在一个矩阵(即二维数组)中,某一个元素既是该行中的最小值,又是该列中的最大值。这个位置被称为鞍点,因为它的特征类似于马鞍,两侧低,中间高。在本...

    java 将二维数组顺时针,逆时针排序

    二维数组是由多个一维数组构成的,每个一维数组称为一个行,所有行组成一个完整的二维数组。对于一个m×n的二维数组,我们可以用一个大小为m*n的一维数组来表示,通过行和列的索引定位每个元素。 1. 顺时针排序: ...

    编写程序,找出一个二维数组的鞍点,即在当前行最大,当前列最小的元素,也可能没有鞍点。

    总之,找出二维数组的鞍点是一个涉及数组遍历和比较的简单但有趣的编程任务。通过这个任务,我们可以练习基础的编程技巧,以及如何有效地处理数据结构和算法。对于初学者,这是一个很好的练习,对于有经验的程序员,...

    使用php对二维数组按数组值进行排序

    二维数组,顾名思义,是数组中的数组,可以理解为表格形式的数据结构,每一行是一个一维数组,所有行数组组成一个二维数组。例如,一个表示学生分数的二维数组可能包含每个学生的姓名和对应的分数。 在PHP 5.4及更...

    4-14_lv一维数组中所有元素之和_

    计算一维数组中所有元素之和的基本算法非常简单:初始化一个变量(初始值通常为零),然后遍历数组中的每一个元素,将当前元素的值加到变量上。当遍历完整个数组后,变量的值即为所有元素的总和。 三、LV中的数组...

    C++两个一维数组相加求和

    本问题主要探讨了如何在C++中实现两个一维数组的相加求和。下面将详细阐述这一过程及其涉及的关键知识点。 首先,我们创建了两个一维整型数组`arr1`和`arr2`,分别初始化为`{1, 2, 3, 4, 5}`和`{6, 7, 8, 9, 10}`。...

    struts2 iterator标签遍历二维数组

    另一个示例,假设我们需要遍历一个名为`dycgList`的二维数组: ```xml [#ss.index]" status="aa"&gt; [#ss.index][#aa.index]"/&gt; ``` 这里同样存在问题,正确的写法应为: ```xml &lt;s:property value="0"/&gt;...

    基于Excel的二维数组k-means聚类

    本篇主要介绍如何借助Excel的VBA(Visual Basic for Applications)语法来实现二维数组的k-means聚类算法,并利用Excel的图表功能展示聚类结果。 首先,我们需要理解k-means算法的基本原理。k-means算法的目标是将...

    C语言 c++语言 二维数组找鞍点

    首先,让我们了解鞍点的定义:在一个二维数组(矩阵)中,如果某元素的值是其所在行的最大值,并且是其所在列的最小值,那么这个元素就被称为鞍点。例如,对于以下二维数组: ``` 1 2 3 4 5 6 7 8 9 ``` 在这个...

    使用 vector 创建二维数组的示例代码

    要使用`vector`创建二维数组,我们通常会定义一个`vector`,其中每个元素也是一个`vector`。例如,如果我们想要创建一个3x3的二维数组,可以这样做: ```cpp #include int main() { std::vector...

    二维排序算法 选择排序 C#二维数组实现

    在这个案例中,我们讨论的是一个C#实现的选择排序算法,它扩展到了二维数组。 **选择排序**是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始...

    基于二维数组和十字链表的Apriori算法 数组和链表(02).pdf

    关联规则挖掘是数据挖掘领域中的一个重要研究方向,其目的在于从大量事务数据中提取有用信息,发现不同项之间的有趣关系。Apriori算法作为关联规则挖掘的开拓性算法,自1993年由Agrawal提出以来,一直是该领域的基础...

    Vector创建二维数组.zip

    下面是一个简单的例子,展示了如何使用`std::vector`创建二维数组: ```cpp #include #include int main() { std::vector&lt;std::vector&lt;int&gt;&gt; matrix(3, std::vector(2)); // 创建一个3x2的二维数组 // 填充...

    简单的三维整型数组

    在这个特定的案例中,我们讨论的是一个“简单的三维整型数组”,它通过ArrayList和二维数组实现,这是一种非传统但灵活的方式来创建和管理三维数据。 首先,让我们深入理解ArrayList。ArrayList是Java集合框架的一...

    程序设计-二维数组.pptx

    在C/C++中,定义一个二维数组的基本语法是:类型符 数组名[常量表达式][常量表达式]。例如,`int a[3][4]` 定义了一个3行4列的整型数组。这里的3和4是常量表达式,表示数组的行数和列数,它们必须在编译时就能确定。...

    php将一维数组转换为每3个连续值组成的二维数组

    我们使用一个`for`循环,迭代3次,每次迭代时,`array_slice()`函数从`$aaa`中提取3个连续的元素,然后将这些元素作为一个新的数组添加到`$bbb`二维数组中。 ```php for ($i = 0; $i ; $i++) { $bbb[] = array_...

Global site tag (gtag.js) - Google Analytics