一、数组的封装_封装数组__JenKin的博客-程序员秘密

技术标签: java  java数据结构学习  数据结构  

数组首先本身就是一个数据结构,在Java中ArrayList就是一个基于数组而实现的非常好用的工具,这里我就是对数组实现了一些简单的封装,让我们的数组拥有了一些简单的增删改查的功能。
源码贴出~

package com.array;

/**
 * java数据结构与算法----数组
 * 数组本身就是一种数据结构,这里是对数组的简单封装
 * @author **
 *
 */
public class Array {
    
    private int[] arr ;
    private int index=0;
    private int allsize=0;//定义数组大小
    /**
     * 构造方法初始化数组
     * @param size 数组的大小
     */
    public Array(int size) {
        allsize=size;
        arr= new int[allsize];
    }
    /**
     * 插入一条数据
     * @param data 数据值
     */
    public void insert(int data){
        arr[index]=data;
        index++;//每当插入一条数据之后就让下标加一
    }
    /**
     * 查找某个值对应的索引
     * @param val 值
     * @return i 索引,返回-1代表没找到
     * 
     */
    public int find(int val){
        // 顺序查找,若想采用二分查找则数组必须是有序的
        for (int i = 0; i < getSize(); i++) {
            if(arr[i]==val)
                return i;
        }
        return -1;
    }
    /**
     * 删除指定的值
     * @param val 需要删除的值
     * @return 是否删除成功
     */
    public boolean deleteVal(int val){
        boolean f=false;
         int index=find(val);
         if(index==-1)
             return f;
         else{
              for (int i = index; i < arr.length-1; i++) {
            arr[i]=arr[i+1];
        }
         allsize=arr.length-1;//删除之后数组的实际大小并没有变化,这里定义一个allsize让大小看起来变小了
         f=true;
         }
        return f;
    }
    /**
     *删除下标索引对应的数组元素
     * @param index 下表索引
     * @return 是否删除成功
     */
    public boolean deleteIndex(int index){
        boolean f=false;

         if(index<0||index>=getSize())
             return f;
         else{
              for (int i = index; i < arr.length-1; i++) {
            arr[i]=arr[i+1];
        }
         allsize=allsize-1;//删除之后数组的实际大小并没有变化,这里定义一个allsize让大小看起来变小了
         f=true;
         }
        return f;
    }
    /**
     * 返回一个看起来变化了的大小
     * @return
     */
    public int getSize(){
        return allsize;
    }
    /**
     * 接受索引号和值进行修改
     * @param index 索引号
     * @param val 值
     * @return 是否修改成功
     */
    public boolean update(int index,int val){
        boolean f =false;
        if(index>=0&&index<getSize()){
            arr[index]=val;
        }
        return f;
    }
    /**
     * 打印全部数据
     */
    public void viewAll(){
        for (int i = 0; i <getSize(); i++) {
            System.out.print(arr[i]+" ");
        }
    }

    public static void main(String[] args) {
        Array a = new Array(10);
        for(int i=0;i<10;i++)
        a.insert(i);
        a.deleteVal(5);
        a.deleteIndex(5);
        a.update(2, 15);
        System.out.println(a.find(9));
        a.viewAll();
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/youzi1394046585/article/details/72459165

智能推荐

Android内核移植到2440A_移植安卓到2440_yinwei520的博客-程序员秘密

今天把android内核交叉编译后移植到我的2440开发板,下面是一些心得。 1、从http://code.google.com/p/android/downloads/list上下载linux-2.6.25-android-1.0_r1.tar.gz 2、解压到任意目录下,解压命令为tar tar –zxvf linux-2.6.25-android-1.0_r1.tar.gz。 3、解压2440板的交叉编译工具arm-linux-gcc-3.4.1.tar.bz2命令为tar xjvf arm-linu

python-paho-mqtt 客户端主动断开后重连方法_client.loop_start()_wanzheng_96的博客-程序员秘密

在使用 python-paho-mqtt 开发客户端的时候,有时候会遇到mqtt客户端断开后无法重连的问题,如果你的客户端是使用 loop_start() 运行的,可能遇到了跟我同样的问题。分析paho.mqtt.client 中使用 loop_forever() 是阻塞式的自动处理收发数据的,所有的数据处理逻辑都在预先设定好的回调函数中进行的,如果不想阻塞主进程可以使用loop_start() 在子进程中运行loop_forever() 。执行loop_start() 后,如果不主动断开与brok

Python基础教程——1.4Python的基础语法_Deepcoldwing的博客-程序员秘密

Hello World程序长期以来, 编程界都认为刚接触一门新语言时, 首先使用它来编写一个在屏幕上显示消息“Hello world!”的程序, 将给你带来好运。要使用Python来编写这种Hello World程序, 只需一行代码:print(“Hello world!”)这种程序虽然简单, 却有其用途: 如果它能够在你的系统上正确地运行, 你编写的任何Python程序都将如此。 稍后将介绍如何在特定的系统中编写这样的程序。注释本章目标了解注释的作用掌握单行注释(行注释)掌握多行注释(

node.js日志框架选型:Bunyan_bunyanjs_老汉的微笑的博客-程序员秘密

BunyanBunyan(by Trent Mick)是另外一个值得考虑的日志框架,以略微不同的方式处理结构化,机器可读性被重点对待。其结果是,bunyan每行日志记录实际上就是JSON.stringify的一个输出。安装(Installation)npm install bunyan使用(Usage)var bunyan= require('bunyan');var log=bunyan.cre...

最优传输系列(三):Majorization-Minimization优化_the majorization-minimization (mm)_CtrlZ1的博客-程序员秘密

目录介绍MM的思想MM过程总结引用介绍MM优化更多地来讲是一种思想,并不特指某种算法,依靠这种思想可以衍生出很多优化算法。我本人并非数学专业人士,最优传输的求解中用到了MM优化算法,所以特意了解并记录了一下,内容浅显,仅涉及皮毛。本文参考了其他博客的相关内容并整理在本文中,后面会附上相关连接,侵删。MM的思想MM算法的思想是这样的:简单来说,就是我想求解某个目标函数JJJ的最小值,但是比较难算,那么我可以新构造一个好求解的目标函数GGG,在满足一定条件的前提下,不断求解GGG的最小值,

随便推点

U3D实现WebCamera显示_unity webcamera rotation_MHGO_LH的博客-程序员秘密

Unity3D 原生WebCamera实现摄像头显示 原创 2017年02月15日 12:03:22 <ul class="article_tags clearfix cs

广义背包问题_skyf**er的博客-程序员秘密

问题描述广义背包问题的描述如下:给定载重量为M的背包和n种物品,每种物品有一定的重量和价值,现在需要设计算法,在不超过背包载重量的前提下,巧妙选择物品,使得装入背包的物品的总价值最大化。规则是,每种物品均可装入背包多次或不装入(但不能仅装入物品的一部分)。符号描述递推公式算法实现以及时空复杂度function GKP(M, m, v) { var n = m.l...

将rostopic echo的内容保存到txt文件中_rostopic数据保存为txt_Hello_RoyChen的博客-程序员秘密

例如话题为/topic1首先source devel/setup.bashrostopic echo /topic1 | grep id: -w &gt; result.txt这句话的意思是分解来看rostopic echo /topic1 是打印话题/topic1的结果grep id: -w 查找关键词 id: -w表示只显示全字符合的列。&gt; result.tx 把符合结果的信息保存到 result.txt文件中。...

PTA 1003 我要通过! (20 分)_Miyaraku_2020的博客-程序员秘密

某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。

redhat AS 5 上命令行安装Oracle 10g--未测试成功_iteye_15826的博客-程序员秘密

1 安装前的准备准备工作要用登录为root用户来进行。1.1 选择安装环境的语言Oracle安装时可以通过环境变量LANG指定安装语言,如果Linux命令行不能显示中文,就要将语言环境设置为英语。例如:export LANG=en_US.UTF-81.2 修改gennttabOracle 10g在一些Linux系统下安装可能会被中断,在安装日志文件$OR...

推荐文章

热门文章

相关标签