当前位置: 首页 > news >正文

利用数组储存表格数据

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

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

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

                数据类型 [ ] 数组名称 = 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();}}
}

相关文章:

利用数组储存表格数据

原理以及普通数组储存表格信息 在介绍数组的时候说过&#xff0c;数组能够用来储存任何同类型的数据&#xff0c;这里的意思就表明只要是同一个类型的数组据就可以储存到一个数组中。那么在表格中同一行的数据是否可以储存到同一个数组中呢&#xff1f;答案自然是可以&#xff…...

[数据概念|数据技术]智能合约如何助力数据资产变现

“ 区块链上数据具有高可信度&#xff0c;智能合约将区块链变得更加智能化&#xff0c;以支持企业场景。” 之前鼹鼠哥已经发表了一篇文章&#xff0c;简单介绍了区块链&#xff0c;那么&#xff0c;智能合约又是什么呢&#xff1f;它又是如何助力数据资产变现的呢&#xff1f;…...

JS中的常见二进制数据格式

格式描述用途示例ArrayBuffer固定长度的二进制数据缓冲区&#xff0c;不直接操作具体的数据&#xff0c;而是通过类型数组或DataView对象来读写用于存储和处理大量的二进制数据&#xff0c;如文件、图像等let buffer new ArrayBuffer(16);TypedArray基于ArrayBuffer对象的视图…...

uniapp开发h5端使用video播放mp4格式视频黑屏,但有音频播放解决方案

mp4格式视频有一些谷歌播放视频黑屏&#xff0c;搜狗浏览器可以正常播放 可能和视频的编码格式有关&#xff0c;谷歌只支持h.264编码格式的视频播放 将mp4编码格式修改为h.264即可 转换方法&#xff1a; 如果是自己手动上传文件可以手动转换 如果是后端接口调取的地址就需…...

Hive的分区与排序

一、Hive分区 1.引入&#xff1a; 在大数据中&#xff0c;最常见的一种思想就是分治&#xff0c;我们可以把大的文件切割划分成一个个的小的文件&#xff0c;这样每次操作一个个小的文件就会很容易了&#xff0c;同样的道理&#xff0c;在hive当中也是支持这种思想的&#xff…...

Objective-C学习笔记(内存管理、property参数)4.9

1.引用计数器retainCount&#xff1a;每个对象都有这个属性&#xff0c;默认值为1&#xff0c;记录当前对象有多少人用。 为对象发送一条retain/release消息&#xff0c;对象的引用计数器加/减1&#xff0c;为对象发一条retainCount,得到对象的引用计数器值&#xff0c;当计数器…...

C语言进阶课程学习记录-第29课 - 指针和数组分析(下)

C语言进阶课程学习记录-第29课 - 指针和数组分析&#xff08;下&#xff09; 数组名与指针实验-数组形式转换实验-数组名与指针的差异实验-转化后数组名加一的比较实验-数组名作为函数形参小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源于课…...

一起学习python——基础篇(13)

前言&#xff0c;python编程语言对于我个人来说学习的目的是为了测试。我主要做的是移动端的开发工作&#xff0c;常见的测试主要分为两块&#xff0c;一块为移动端独立的页面功能&#xff0c;另外一块就是和其他人对接工作。 对接内容主要有硬件通信协议、软件接口文档。而涉…...

SOCKS代理概述

在网络技术的广阔领域中&#x1f310;&#xff0c;SOCKS代理是一个核心组件&#xff0c;它在提升在线隐私保护&#x1f6e1;️、实现匿名通信&#x1f3ad;以及突破网络访问限制&#x1f6ab;方面发挥着至关重要的作用。本文旨在深入探讨SOCKS代理的基础&#xff0c;包括其定义…...

AI助力M-OFDFT实现兼具精度与效率的电子结构方法

编者按&#xff1a;为了使电子结构方法突破当前广泛应用的密度泛函理论&#xff08;KSDFT&#xff09;所能求解的分子体系规模&#xff0c;微软研究院科学智能中心的研究员们基于人工智能技术和无轨道密度泛函理论&#xff08;OFDFT&#xff09;开发了一种新的电子结构计算框架…...

【数据结构】单链表(一)

上一篇【数据结构】顺序表-CSDN博客 我们了解了顺序表&#xff0c;但是呢顺序表涉及到了一些问题&#xff0c;比如&#xff0c;中间/头部的插入/删除&#xff0c;时间复杂度为O(N);增容申请空间、拷贝、释放旧空间会有不小的消耗&#xff1b;增容所浪费的空间... 我们如何去解…...

SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测

SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测预测效果基本介绍模型描述程…...

Coursera吴恩达《深度学习》课程总结(全)

这里有Coursera吴恩达《深度学习》课程的完整学习笔记&#xff0c;一共5门课&#xff1a;《神经网络和深度学习》、《改善深层神经网络》、《结构化机器学习项目》、《卷积神经网络》和《序列模型》&#xff0c; 第一门课&#xff1a;神经网络和深度学习基础&#xff0c;介绍一…...

C# 操作PDF表单 - 创建、填写、删除PDF表单域

通常情况下&#xff0c;PDF文件是不可编辑的&#xff0c;但PDF表单提供了一些可编辑区域&#xff0c;允许用户填写和提交信息。PDF表单通常用于收集信息、反馈或进行在线申请&#xff0c;是许多行业中数据收集和交换的重要工具。 PDF表单可以包含各种类型的输入控件&#xff0…...

Astropy:探索宇宙奥秘的Python工具箱

Astropy:探索宇宙奥秘的Python工具箱 什么是Astropy库&#xff1f; Astropy 是一个面向天文学领域的 Python 库&#xff0c;旨在提供常用的天文学数据结构、单位转换、物理常数以及天文学计算方法等功能。它为天文学家和研究人员提供了丰富的工具&#xff0c;用于处理和分析天文…...

java数据结构与算法刷题-----LeetCode684. 冗余连接

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 并查集 并查集 解题思路&#xff1a;时间复杂度O( n ∗ l o g 2…...

循环神经网络简介

卷积神经网络相当于人类的视觉&#xff0c;但是它并没有记忆能力&#xff0c;所以它只能处理一种特定的视觉任务&#xff0c;没办法根据以前的记忆来处理新的任务。比如&#xff0c;在一场电影中推断下一个时间点的场景&#xff0c;这个时候仅依赖于现在的场景还不够&#xff0…...

计算机网络 子网掩码与划分子网

一、实验要求与内容 1、需拓扑图和两个主机的IP配置截图。 2、设置网络A内的主机IP地址为“192.168.班内学号.2”&#xff0c;子网掩码为“255.255.255.128”&#xff0c;网关为“192.168.班内学号.1”&#xff1b;设置网络B内的主机IP地址为“192.168.班内学号100.2”&#…...

HUD抬头显示器中如何设计LCD的阳光倒灌实验

关键词&#xff1a;阳光倒灌实验、HUD光照温升测试、LCD光照温升测试、太阳光模拟器 HUD&#xff08;Head-Up Display&#xff0c;即抬头显示器&#xff09;是一种将信息直接投影到驾驶员视线中的技术&#xff0c;通常用于飞机、汽车等驾驶舱内。HUD系统中的LCD&#xff08;Liq…...

Shoplazza闪耀Shoptalk 2024,新零售创新解决方案引领行业新篇章!

在近期举办的全球零售业瞩目盛事——Shoptalk 2024大会上,全球*的零售技术平台-店匠科技(Shoplazza)以其*的创新实力与前瞻的技术理念,成功吸引了与会者的广泛关注。此次盛会于3月17日至20日在拉斯维加斯曼德勒湾隆重举行,汇聚了逾万名行业精英。在这场零售业的盛大聚会上,Shop…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...