利用数组储存表格数据

2024-04-11 07:44
文章标签 数据 数组 表格 储存

本文主要是介绍利用数组储存表格数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原理以及普通数组储存表格信息

        在介绍数组的时候说过,数组能够用来储存任何同类型的数据,这里的意思就表明只要是同一个类型的数组据就可以储存到一个数组中。那么在表格中同一行的数据是否可以储存到同一个数组中呢?答案自然是可以,但是与之对应的疑惑便也产生了,比如一个学生类的表格中存储的信息是学生的姓名、年龄、籍贯、省份证号等等等等的信息,很明显他们的类型是完全不同的,那么怎么能将他们储存进一个数组中呢?

        在解决这个问题之前,先提出一个问题。在定义数组的时候我们采用的语法结构是

                数据类型 [ ] 数组名称 = new 数据类型 [ 数组长度] ;

那么这里的数据类型有多少种呢?估计会有人毫不犹豫地回答8种。因为java中有8中基本数据类型,因此很多人会这样回答。但是其实在java中还有字符串类型和引用类型,我们依然能创建与这两种数据类型对应的数组。因此确切来说这里的数据类型有10种。

        既然解决了数据类型的问题,那么这里再提出一个问题,那就是,这里的数据类型有多少种表达方式呢?如果回答10种,那么恭喜你又错了。因为有引用类型的存在,所以理论上来说这里的数据类型的表达可以有无数种方式,因为类属于引用类型,所以每一个类都可以写成数组的数据类型。比如如果定义了一个Person类,那么就可以定义数组 Person[ ] person = new Person[数组长度];而这里有一个很明显的问题,那几是类可以有无数个,因此数据类型的表达也就有了无数个。

        解决了以上问题,对于数组种能否储存表格中的数据这个问题也就迎刃而解了。首先之前说过,数组也是对象,其次new关键字能够用来创建对象。那么当我们用一个类的名称来定义数组时,是不是变成了这样的格式:

        类名 [ ] 数组名 = new 类名[ 数组长度];

可以发现,这个格式的右边与类中对象的创建非常相似,甚至在一定条件下可以说它就是创建了一个对象也无可厚非。而这个数组中储存的正好就是类的对象。比如我们以下面这个代码为例,当创建数据类型为Emp的数组emps时,因为数据类型为类名,所以创建数组中的元素时必须调用类的构造方法,创建这个类的对象,这时数组中的元素就是类Emp的对象。这样如果把每一个对象的信息都放入表格之中,那么这个数组中的信息不就是这个表格的信息吗。

package cn.luoyusanshu.array;
import java.util.Arrays;
/*** 使用javabean和一维数组储存表格信息*/
public class Test07 {public static void main(String[] args){Emp emp0 = new Emp(1001,"高小一",18,"程序员","2019-9-21");Emp emp1 = new Emp(1003,"高小二",19,"程序员","2019-8-21");Emp emp2 = new Emp(1005,"高小三",20,"程序员","2019-9-25");//Object[] emps = {emp0,emp1,emp2};Emp[] emps = new Emp[3];emps[0] = emp0;emps[1] = emp1;emps[2] = emp2;for (int i = 0; i < emps.length; i++) {System.out.println(emps[i].getId()+"\t"+emps[i].getAge()+"\t"+emps[i].getName());}for (int i = 0; i < emps.length; i++) {System.out.println(emps[i]);}}
}
class Emp{private int id;private String name;private int age;private String job;private String hiredate;public Emp(){}public Emp(int id, String name, int age, String job, String hiredate) {this.id = id;this.name = name;this.age = age;this.job = job;this.hiredate = hiredate;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return getId()+"\t"+getName()+"\t"+getAge()+"\t"+getJob()+"\t"+getHiredate();}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}public String getHiredate() {return hiredate;}public void setHiredate(String hiredate) {this.hiredate = hiredate;}
}

Object数组储存表格信息 

        由此我们已经知道了普通数组可以用来储存表格的信息,但是这却也带来了一个麻烦,那就是每一次要储存一个表格的信息都要重新定义一个类,这样显得过于麻烦且没有必要。为了解决这样一个问题Object数组便出现了,我们都知道Object类是所有类的父类,所以如果使用Object类作为数组的数据类型就意味着它可以直接对表格数据进行存储。比如在下面的这个代码中,a1[0]数组便能够储存这些看似为不同类型的数据,当然这只是表面上的,其实这些数据都是同一个类型——对象。这里要注意的是java中的基本数据类型并不属于对象,但在使用中当需要这些数据类型变为对象的时候大多数情况下系统会自动对其进行装箱操作,从而将其转化为对象。

package cn.luoyusanshu.array;
import java.util.Arrays;
public class Test06 {public static void main(String[] args) {Object[][] a1 = new Object[3][];a1[0]=new Object[]{1001,"高小一",18,"讲师","2002-90-17"};a1[1]=new Object[]{1001,"高小二",18,"讲师","2002-90-19"};a1[1]=new Object[]{1001,"高小三",18,"讲师","2002-90-27"};System.out.println(a1[0]);System.out.println(Arrays.toString(a1[0]));Object[] emp0 = {1001,"高小一",18,"讲师","2002-90-17"};Object[] emp1 = {1001,"高小二",18,"讲师","2002-90-16"};Object[] emp2 = {1001,"高小三",18,"讲师","2002-90-28"};Object[][] emp = new Object[3][];emp[0] = emp0;emp[1] = emp1;emp[2] = emp2;System.out.println(Arrays.toString(emp[0]));System.out.println(Arrays.toString(emp[1]));System.out.println(Arrays.toString(emp[2]));System.out.println("____________________________");for (int i = 0; i < emp.length; i++) {System.out.println(Arrays.toString(emp[i]));}System.out.println("_______________________________");for (int i = 0; i <emp.length ; i++) {for (int j = 0; j < emp[i].length; j++) {System.out.print(emp[i][j]+"\t");}System.out.println();}}
}

这篇关于利用数组储存表格数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/893481

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池

Java利用Spire.XLS for Java设置Excel表格边框

《Java利用Spire.XLSforJava设置Excel表格边框》在日常的业务报表和数据处理中,Excel表格的美观性和可读性至关重要,本文将深入探讨如何利用Spire.XLSforJava库... 目录Spire.XLS for Java 简介与安装Maven 依赖配置手动安装 JAR 包核心API介

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性