这次我们先简单了解一下数据结构以及我们程序员常见的一个引用类型-数组【可变长】。
一、集合框架类
1、数据结构: 存储数据的容器,不同的结构体现为数据的存储方式以及数据之间的关系不一样
结构包括:结构体,类,数组,长度可变数组,堆栈,向量,队列,集合,映射,链表,树[二叉树], 图
数据结构的具体操作:
1.增加数据
2.删除数据
3.修改数据
4.查询数据
5.取出数据
6.数据的个数
2、泛型:从jdk1.5新增加的语法
在定义的时候将类定义成一个变量,等到具体使用的时候[创建对象的时候]在明确这个类的类型
只能用在成员方法和构造方法中
泛型的具体化必须是一个引用类型
如果创建对象的时候没有给泛型具体化,会默认使用Object类来具体化泛型
3、可变数组的具体实现
/** * 自定义长度可变数组 * @author liuqingjian */ //<E>是泛型的定义,便于各种类型使用 public class MyAarry_<E> { private Object[] src = new Object[0]; //初始长度 private int num = 0; private int initsize = 10;// 容量值,每次扩充的长度,方便减少损耗时间 //构造方法,用于用户初始化容量值 public MyAarry_(int initsize) { this.initsize = initsize; Object[] dest = new Object[src.length + initsize]; src = dest; } /** * 存放数据 * * @param s * 要存放的数据 */ public void add(E s) { // 如果没放满,继续放 if (num >= src.length) { // 如果已经满了,就增加数组容量 Object[] dest = new Object[src.length + initsize ]; // 将原数组拷贝到新数组 System.arraycopy(src, 0, dest, 0, src.length); //还原到原数组 src = dest; } src[num++] = s; } /** * 取出数据 * * @param index * 要取出数据的下标 */ public E get(int index) { if (index >= 0 && index < num) { //定义一个Object的变量储存src的下标为index值 Object s = src[index]; //返回下标为index的值 return (E) s; } //没有则返回null return null; } /** * 根据下标删除数据 * * @param index * 删除数据的下标 */ public void delete(int index) { //将index之后的数据往前挪一位 System.arraycopy(src, index + 1, src, index, num - index - 1); num--; if (num % initsize == 0) { // 如果容量超过数量容量initsize 了,就减少数组容量 Object[] dest = new Object[num]; // 将原数组拷贝到新数组 System.arraycopy(src, 0, dest, 0, num); src = dest; } } /** * 删除数据 * * @param s * 要删除的数据,如果有重复的数据,就删除下标最小的 */ public void delete(E s) { //标记 int index = -1; //逐个寻找s的下标 for (int i = 0; i < num; i++) { if (s.equals(src[i])) { index = i; break; } } if (index == -1) { //没有就返回错误 System.err.println("该数组中没有" + s); } else { //否则就删除该下标的数据 delete(index); } } /** * 将数据插入到指定位置 * * @param index * 要插入的位置 * @param s * 要插入的数据 */ public void insert(int index, E s) { //如果src数组里还有空白,则index以及之后的数据往后挪一位 if (num >= 0 && num < src.length) { for (int i = num; i > index; i--) { src[i] = src[i - 1]; } } else {//否则就需要开辟新的空间,再复制 Object dest[] = new Object[src.length + initsize]; System.arraycopy(src, 0, dest, 0, index); System.arraycopy(src, index, dest, index + 1, num - index); src = dest; } src[index] = s; num++; } /** * 修改数据 * * @param index * 要修改的数据的下标 * @param s * 修改后的数据 */ public void update(int index, E s) { //直接改变src数组下标index的值 src[index] = s; } /** * 获得数组长度 * * @return 数组长度 */ public int size() { return num; } }
相关推荐
本文将探讨数字化制造的核心支撑技术——工艺数据结构化技术,并对其进行简要分析。 首先,我们需要了解工艺数据的定义及其在制造执行中的重要性。工艺数据是指在产品制造过程中产生的数据,这些数据包括但不限于...
数据结构作为计算机图形学的一个核心组成部分,扮演着至关重要的角色。它不仅关系到图形的生成和显示,而且也影响着图形处理的效率和效果。 在计算机图形学中,数据结构的应用可以归纳为以下几个方面: 首先,几何...
首先,数据结构是一种组织数据的方式,它允许程序员以不同的方式存储、操作和访问数据。在计算机图形学中,数据结构使得图形数据组织变得有序,方便计算机生成、处理和输出图形。例如,将图形数据结构化后,可以快速...
"数据新世代,万物皆可中台——中国数据中台行业发展简析[2021-03-02]"这篇报告深入探讨了这一趋势,并提供了42页详实的分析内容。本文将基于标题和描述,结合相关标签,对数据中台的概念、重要性以及在中国的发展...
【美国商业文化概述】 美国商业文化是其国家文化的重要组成部分,自19世纪末以来一直引领全球商业潮流。美国商业的崛起始于第二次工业革命,福特公司1908年批量生产Model T汽车,开启了大规模生产的新纪元。...
#资源达人分享计划#
数据结构 题库外加答案和简析,详细的各种题型,大学考试中必出的题型。
### 数值分析——高斯消元法解线性方程组 #### 一、引言 高斯消元法是一种非常重要的数值计算方法,广泛应用于线性方程组的求解之中。它不仅可以用于理论研究,也是实际工程计算中解决线性问题的基础工具之一。...
### 单片机数据存储器经验简析 #### 一、引言 单片机作为电子设备中的核心部件之一,在工业控制、智能家居、消费电子产品等多个领域有着广泛的应用。单片机内部包含两种主要类型的存储器:程序存储器(Program ...
简析数据加密技术在计算机网络安全中的应用
简析管理会计在中小企业的经营管理优化作用——以新能源企业为例.pdf
【企业分配20策——简析立体薪酬体系】 在当今社会,改革收入分配制度和规范收入分配秩序成为了高层关注的重点。随着经济的高速发展,我国现有的薪酬体系已经无法满足企业和员工的需求,亟需改革以适应社会主义初级...
《5G关键材料——第三代半导体材料市场发展简析》 5G时代的到来,对关键材料提出了新的要求,其中,第三代半导体材料,尤其是氮化镓(GaN)和碳化硅(SiC),因其独特的优越性能,成为了5G通信、新能源汽车、电力...
简析数据挖掘技术在项目质量管理中的应用.pdf
本文将简析Android中处理JSON数据的几种方法,为Android开发者提供一些实用技巧。 首先,理解JSON的基本结构是至关重要的。JSON是一种轻量级的数据交换格式,它基于JavaScript的一个子集,采用完全独立于语言的文本...
Z-Buffer是一种空间数据结构,用于存储每个像素的深度值,以判断新绘制的像素是否应该覆盖原有的像素。当一个新的像素被渲染时,GPU会检查其Z值(深度值),如果新像素的Z值小于已存在像素的Z值,则更新该位置的像素...
【PHP+新浪微博开放平台+新浪云平台(SAE)开发微博应用——PHP SDK中Demo程序简析】 在本文中,我们将探讨如何使用PHP与新浪微博开放平台以及新浪云平台(SAE)来构建微博应用,主要关注PHP SDK中的Demo程序。这个...