博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.1使用java数组,并开始封装我们自己的数组
阅读量:6097 次
发布时间:2019-06-20

本文共 1980 字,大约阅读时间需要 6 分钟。

今天感冒了,全身酸软无力,啥样不想做,就来学习吧,此节我们从初步使用java中提供的数组,然后分析相关情况,过渡到封装我们自己的数组。

一.我们先来感受一下java提供的数组,以整型数组(int[])为例,相关代码如下:

 

public class Main {    public static void main(String[] args) {        int[] arr = new int[10];        for(int i = 0 ; i < arr.length ; i ++)            arr[i] = i;        int[] scores = new int[]{100, 99, 66};        for(int i = 0 ; i < scores.length ; i ++)            System.out.println(scores[i]);        for(int score: scores)            System.out.println(score);        scores[0] = 96;        for(int i = 0 ; i < scores.length ; i ++)            System.out.println(scores[i]);    }}

1.对于数组最大优点:快速查询。例如我想知道scores下标为1数值是多少,我们只需

scroes[1]

即可快速访问到该下标对应的值。

2.数组最好应用于"索引有语义"的情况,换句话说我们得知道在查什么,比如查询学号为1的学生成绩,这种情况。如果没有语义最好是用其他的数据结构。可以以后做一个比较。

3.有的场景下:即使索引有语义,但是不适合用数组。 比如:使用11位手机号码(开辟空间是否过大,是否有空间浪费。)

但是如果我们需要在索引没有语义的情况下,也可以使用数组,这时该怎么使用数组?该怎么表示数组没有元素?该怎么添加元素?该怎么删除元素?

Java原本的数组属于静态数组,要解决以上问题,要基于Java数组二次封装属于我们的数组(动态数组)。最后做简单的复杂度分析,看看性能。

二.制作属于我们自己的数组类

此部分我们主要是为了解决上述的疑问,我们需要基于Java数组二次封装属于我们的数组(动态数组)。

操作:新建一个Array类,定义私有的data数组(此处我们从封装int类型数组为例)

/** * 1.从封装int类型数组开始 */public class Array {    //使用private 的目的是防止用户从外界修改,造成数据不一致    private int[] data;    private int size;    //构造函数,传入数组的容量capacity构造Array函数    public Array(int capacity) {        data = new int[capacity];        size = 0;    }    //无参构造函数,默认数组的容量capacity=10    public Array() {        this(10);    }    //获取数组中元素个数    public int getSize() {        return size;    }    //获取数组的容量    public int getCapacity() {        return data.length;    }    //获取数据是否w为空    public boolean iEmpty() {        return size == 0;    }}

此处我们只是简单对数组新增几个普通方法,算是简单的入门过渡一下吧,呵呵~

对数据结构来说,本质和数据库是一样的,也是存储数据,之后再对这些数据进行高效的操作。只不过涉及的数据结构会把数据存储在内存中,所以在大的类别的划分,也是增删改查。针对不同的数据结构,对增删改查的方式是截然不同的。甚至有的数据结构会忽略其中的某个动作。但是不管怎样,增删改查四个动作可以作为我们研究一个数据结构相应的脉络。由于数组本身是静态的,创建时就必须指定大小(容量capacity)。数组有多少元素(size)。

下一节我们将针对数组新增增删改查等方法,便于我们使用数组~

仅供学习记录,别无它用。。。。

posted on
2019-03-23 17:50 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/wfaceboss/p/10584770.html

你可能感兴趣的文章
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
ubuntu apt-get 安装 lnmp
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
Check failed: error == cudaSuccess (7 vs. 0) too many resources requested for launch
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>