一、数组的封装

数组首先本身就是一个数据结构,在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();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值