-
求常用的数据设计(行列)的java代码5
问一个很实际的问题。
我先从数据库里面读出几条记录,eg:从数据库里面读出2009年1月份的数据。
mc day data
M1 2009-01-02 13
M1 2009-01-05 20
M2 2009-01-11 12
M4 2009-01-30 21
M5 2009-01-05 15
然后要在jsp页面中按照mc显示出这个月的每天的数据,并汇总。
要求如果是当前月的话显示到今天,如果月份比当前的月大的话,就没有数据显示。
AVG为sum by mc
Total为这一天所有mc的总和
mc要按照顺序排序。M1,M2,M3.......
2009-01-01 2009-01-02 2009-01-03 2009-01-04 2009-01-05 2009-01-06 .......AVG
M1 13 20 1.06
M2
M4
M5 15
Total 13 35
不知道数据怎么存放好,要求效率要高。
谢谢,要有实现代码
问题补充:
页面显示有点问题。
是这样的。我从数据里面读到的数据为:
mc day data
M1 2009-01-02 13
M1 2009-01-05 20
M2 2009-01-11 12
M4 2009-01-30 21
M5 2009-01-05 15
然后我要把它在页面中显示出来。
表头:是这个月的所有的天数(2009-01-01,2009-01-02,...2009-01-31),最后放一个avg。
列为mc的列表+total信息。
就是显示每台mc在这个月的每天的data。
01-01 01-02 01-03 01-04 01-05 01-06 ....... 01-31 AVG
M1 13 0 0 0 20 0 0 1.06--(13+20)/31
M2 0 0 0 0 0 0 0 0.39
M4 0 0 0 0 0 0 0 0.68
M5 0 0 0 0 15 0 0 0.48
Total 13 0 0 0 35 0 0 2.61
问题补充:
谢谢zgy_zhengGY ,你的答复。有一个对应的实体对象 封装所有字段 外加上字段 avg的,
不知道你这个实体是怎么组织的?
要放到什么集合中?怎么放?
问题补充:class Tab{ private String mc; private String day; private int data; private double avg; //getter and setter method
然后:List<Tab> tabList = new ArrayList<Tab>(); Tab tab1 = new Tab(); tab1.setMc("M1"); tab1.setDay("2009-01-02"); tab1.setData(13); tab1.setAvg(0.0);//不知道这个放什么值,暂时先放个0.0 tabList.add(tab1); tab1 = new Tab(); tab1.setMc("M1"); tab1.setDay("2009-01-05"); tab1.setData(20); tab1.setAvg(0.0); tabList.add(tab1); tab1 = new Tab(); tab1.setMc("M2"); tab1.setDay("2009-01-11"); tab1.setData(12); tab1.setAvg(0.0); tabList.add(tab1); tab1 = new Tab(); tab1.setMc("M4"); tab1.setDay("2009-01-30"); tab1.setData(21); tab1.setAvg(0.0); tabList.add(tab1); tab1 = new Tab(); tab1.setMc("M5"); tab1.setDay("2009-01-05"); tab1.setData(15); tab1.setAvg(0.0); tabList.add(tab1);
然后在页面中怎么显示呢?
01-01 01-02 01-03 01-04 01-05 01-06 ....... 01-31 AVG
M1 13 0
M1 20 0
M2 12 0
M4 21 0
M5 15 0
这样不行吧
问题补充:
真是太感谢了。我看明白了。
但是有几个地方你没注意:
1,我从数据库里面读出来的天数,并不一定每天都有,比如说只有1号的数据,但是也要在页面中显示出31天的数据。
2,我从数据库里面读出来的可以一个mc有几条记录。但是要显示在一行。
你写的标签中少了点东西:<table> <!-- 遍历实体tab --> <s:iterator id="tab" value="tabList"> <tr> <td>${tab.mc}</td> <td>${tab.data}</td> <td>${tab.avg}</td> </tr> </s:iterator> </table>
问题补充:
可是离我要的结果还有很远。
还有很多的地方要处理,你说的那个最平常的做法。这里要做数据的处理,你没有说怎么处理的。而这中是我要问的。
问题补充:
谢谢。对,是写死的,还要考虑到月份的问题。
我写过,用到2层hashmap,用了很多的代码,感觉效率不是很高。
请教有什么好的方法吗?
问题补充:
好,你只解决了一个问题,还有一个:
2,我从数据库里面读出来的可以一个mc有几条记录。但是要显示在一行。
还有就是avg和total怎么来处理呢
问题补充:
可以用数据库来处理,但是现在的问题,你不是dba,只能去读数据库,而且数据量很大,不能给数据库带来负担。
只能用code来处理2009年10月13日 18:49
1个答案 按时间排序 按投票排序
-
这个问题规定只能用JAVA来做吗?
我觉得这个问题用存储过程的话会更快,代码也比较清晰。
所有的逻辑方存储过程里,java掉用一下存储过程就可以了。
下面的SQL语句写的不完全,大概表达一下我的意思。
可以在存储过程里对根据不同的月份加工一下。
SELECT mc,
sum(case to_char(day,'DD') when '01' then data else 0 end) as day1,
sum(case to_char(day,'DD') when '02' then data else 0 end) as day2,
sum(case to_char(day,'DD') when '03' then data else 0 end) as day03,
sum(case to_char(day,'DD') when '04' then data else 0 end) as day04,
sum(case to_char(day,'DD') when '05' then data else 0 end) as day05,
sum(case to_char(day,'DD') when '06' then data else 0 end) as day06,
sum(case to_char(day,'DD') when '07' then data else 0 end) as day07,
sum(case to_char(day,'DD') when '08' then data else 0 end) as day08,
sum(case to_char(day,'DD') when '09' then data else 0 end) as day09,
sum(case to_char(day,'DD') when '10' then data else 0 end) as day10,
AVG(data)
FROM XIAOYAO
GROUP BY mc
运行结果:
M1 0 13 0 0 20 0 0 0 0 0 16.5
M2 0 0 0 0 0 0 0 0 0 0 12
M4 0 0 0 0 0 0 0 0 0 0 21
M5 0 0 0 0 21 0 0 0 0 0 212009年10月14日 16:02
相关推荐
总结来说,利用Java实现高斯消元法求行列式的值,需要理解矩阵和行列式的概念,掌握高斯消元的步骤,并能将其转化为编程逻辑。通过创建自定义的`Matrix`类和相关方法,我们可以方便地进行矩阵操作,并计算出其行列式...
【标题】:“1.(地图数据篇)天地图瓦片数据爬取--java代码.zip” 涉及的知识点主要集中在地图数据的获取以及Java编程技术上,特别是网络爬虫在处理地图瓦片数据时的应用。 【地图瓦片数据】: 地图瓦片是一种将...
Java代码爬取ArcGIS地图瓦片涉及以下几个核心概念和技术: 1. **网络请求**:你需要发送HTTP或HTTPS请求到ArcGIS服务器获取特定瓦片。这通常使用`java.net.URL`类或第三方库如Apache HttpClient或OkHttp来实现。 2...
根据给定文件的信息,本文将详细介绍如何使用Java编程语言实现一个计算任意阶数行列...同时,本程序也展示了Java语言处理复杂数据结构的能力,以及如何通过类和方法的设计来组织代码结构,提高程序的可读性和可维护性。
本教程将深入探讨如何使用Java在Eclipse集成开发环境中读取CSV文件中的指定行和列数据。 首先,我们需要了解CSV文件的基本结构。CSV文件是以逗号分隔的文本文件,每行代表一个记录,每个记录的字段由逗号分隔。例如...
以上代码实现了基本的矩阵操作,但实际应用中可能需要更多高级功能,如转置、求逆、求行列式等。在设计类时,可以考虑使用面向对象的原则,将矩阵封装为一个类,包含必要的属性(如行数、列数和元素)以及相关的操作...
当我们从数据库中获取数据,有时会遇到单个字段的数据需要在用户界面上以列的形式展示,这时就需要进行数据的行列转换。 在Java中实现行转列,通常涉及数据结构的转换,如从List<List<String>>转换为List,或者更...
这里的"剑指offer编程题66道题目描述及java代码实现汇总"是一个集合,包含了书中66个编程挑战的详细描述以及对应的Java代码实现。以下是对这些编程题目的部分解析和相关知识点的详细阐述: 1. **数组中出现次数超过...
这些算法包括矩阵乘法、求逆、特征值、行列式计算等,对于图像处理、机器学习等领域尤为重要。 2. **数值求解**:解决线性和非线性方程组是数值算法的重要部分。例如,高斯消元法、雅可比迭代法和Gauss-Seidel迭代...
在"Java常用数值算法集"中,可能包含有以上各个领域的具体Java代码实现,通过阅读和学习这些代码,开发者可以更好地理解和运用数值算法,解决实际问题。同时,这个集合可能也包括了示例、测试和相关的文档,帮助...
本文将详细介绍一个集成了Java语言、小程序技术、MySQL数据库的公考学习平台的设计与实现,并提供系统的源代码。 首先,从技术选型来看,该平台采用Java语言进行开发,Java以其跨平台、面向对象、稳定性和安全性等...
根据给定的信息,我们可以分析出这是一份关于Java编程实现的银行管理系统的课程设计案例。这份案例主要涉及了用户界面的设计以及基本的增删改查功能。下面将详细阐述其中的关键知识点。 ### 1. Java Swing 用户界面...
Java中处理矩阵的算法可能包括矩阵的加法、减法、乘法(包括矩阵乘法和点乘)、转置、求逆、求行列式以及特征值等。这些操作可能基于高效的算法如Strassen分治法或Coppersmith-Winograd算法。 3. **线性方程求解**...
Java代码实现时,可以创建一个新的二维数组C,并用双重循环来计算每个元素。 3. **矩阵转置**: 转置是将矩阵的行变成列,列变成行。给定矩阵A(m×n),其转置矩阵AT(n×m)的元素a'[i][j]等于原矩阵的a[j][i]。...
在Java后台处理HTML数据并转换成Excel文件是一个常见的需求,特别是在数据分析、报表生成或导出功能中。这个技术涉及到HTML解析、数据提取以及Excel文件的生成。以下将详细讲解这个过程涉及的关键知识点。 1. HTML...
DBF表数据行列转换是数据库管理中常见的操作,特别是在处理早期的桌面数据库系统,如FoxPro、dBASE等,这些系统广泛使用DBF文件格式存储数据。DBF(dBASE File)是一种简单但功能强大的表格文件格式,由一系列记录...
在Java编程环境中,生成Excel报表是一项常见的任务,尤其在数据处理和数据分析领域。"java绝对生成excel报表"这个标题暗示了我们可以通过Java实现对Excel文件的创建和操作,确保能够生成精确的表格形式的数据报告。...
JUnit是Java常用的单元测试框架,通过编写测试用例,可以确保代码功能的正确性。源代码中可能包含测试类和测试方法,帮助开发者调试和验证代码。 第七,源代码还可能包含设计模式的应用,如单例模式、工厂模式、...
本篇文章将通过一个具体的Java面试题目,详细介绍如何在Oracle和SQL Server两种数据库环境下实现行列转换,并给出具体的示例代码。 #### 二、需求分析与设计 假设我们有一个成绩表`sc`,表结构如下: - `sid`: ...
1. **基本行列表格模式**:系统应能动态生成包含数据项(如姓名、性别、住址等)的表格,以供用户直观输入。 2. **含有下拉列表的输入模式**:对于有固定选项的数据(如民族、政治面貌),需要动态生成下拉列表,以...