• 自定义数组实现


    // 主要功能有增、删(根据索引,根据值)、改、查扩容
     1 package com.yw.flink;
     2 
     3 public class Test2 {
     4 
     5     public static void main(String[] args) throws Exception {
     6         Mylist s = new Mylist();
     7         s.insert(1);
     8         s.insert(2);
     9         s.insert(1);
    10         System.out.println(s);
    11         s.deleteByIndex(0);
    12         s.travel();
    13     }
    14 }
      1 package com.yw.flink;
      2 
      3 // 主要功能有增、删(根据索引,根据值)、改、查扩容
      4 public class Mylist {
      5     private int[] array = null;
      6     //数组有效长度
      7     public int length = 0;
      8 
      9     //空参构造函数,默认数组大小为10
     10     public Mylist() {
     11         this.array = new int[10];
     12     }
     13 
     14     public Mylist(int size) {
     15         this.array = new int[size];
     16     }
     17 
     18     //给自定义数组添加元素
     19     public void insert(int number) {
     20         //判断数组是否满
     21         //满了,扩容,扩容需要新建一个数组,将旧的数据复制过去,再插入
     22         //没满,直接插入
     23         //插入之后length+1
     24         if (length == array.length) {
     25             expand(this.array);
     26             array[length] = number;
     27         } else {
     28             this.array[length] = number;
     29         }
     30         length++;
     31 
     32     }
     33 
     34     //每次扩容后比之前大一倍
     35     public void expand(int[] arr) {
     36         int expandSize = arr.length * 2;
     37         this.array = new int[expandSize];
     38 
     39         for (int i = 0; i < arr.length; i++) {
     40             this.array[i] = arr[i];
     41         }
     42     }
     43 
     44     //根据索引删除元素
     45     public void deleteByIndex(int index) throws Exception {
     46         //判断索引是否越界,即超过了有效长度
     47         //超过了,抛出异常提示
     48         //没超过就删除
     49         //首先需要将该索引之后的所有元素前移一个位置。
     50         //最后length-1
     51         if (index > length - 1 || index < 0) {
     52             throw new Exception("删除时索引越界");
     53         } else {
     54             for (int i = index; i < length; i++) {
     55                 array[i] = array[i + 1];
     56             }
     57             length--;
     58         }
     59     }
     60 
     61     //根据值删除元素,删除多个
     62     public void deleteByValue(int value) throws Exception {
     63         //首先看数组中有没有这个值,没有抛异常提示
     64         boolean flag = false;
     65         for (int i = 0; i < length; i++) {
     66             if (array[i] == value) {
     67                 flag = true;
     68                 deleteByIndex(i);
     69             }
     70         }
     71         if (!flag)
     72             throw new Exception("该元素不存在");
     73         deleteOne(value);
     74 
     75     }
     76 
     77     //删除一个元素
     78     public void deleteOne(int value) throws Exception {
     79         boolean flag = false;
     80         for (int i = 0; i < length; i++) {
     81             if (array[i] == value) {
     82                 flag = true;
     83                 deleteByIndex(i);
     84                 break;
     85             }
     86         }
     87         if (!flag)
     88             throw new Exception("该元素不存在");
     89     }
     90 
     91     //修改某索引对应元素的值
     92     public void update(int index, int value) throws Exception {
     93         if (index > length - 1 || index < 0) {
     94             throw new Exception("修改时索引越界");
     95         } else {
     96             array[index] = value;
     97         }
     98     }
     99 
    100     //(遍历)数组的元素
    101     public void travel() {
    102         System.out.print("[");
    103         for (int i = 0; i < length; i++) {
    104             System.out.print(array[i]);
    105             if (i < length - 1)
    106                 System.out.print(",");
    107         }
    108         System.out.println("]");
    109     }
    110 
    111     //根据值查找元素,返回索引
    112     public int search(int value) throws Exception {
    113         int i = 0;
    114         for (i = 0; i < length; i++) {
    115             if (value == array[i])
    116                 break;
    117         }
    118         if (i == length)
    119             return -1;
    120         return i;
    121     }
    122 
    123     //根据索引元素,返回值
    124     public int searchByIndex(int index) throws Exception {
    125         if (index < 0 || index >= length) {
    126             throw new Exception("索引越界");
    127         }
    128         return array[index];
    129 
    130     }
    131 
    132     
    133 
    134 }
  • 相关阅读:
    模块
    javacript一键换肤
    ajax请求
    jquery获取元素的方法
    ajax请求里的contentType: "application/json"作用
    Underscore.js 入门-常用方法介绍
    .NET Core调用WCF的最佳实践
    证伪主义——科学与伪科学的量尺
    高效的筒仓
    此时此刻,一个项目正在走向失败
  • 原文地址:https://www.cnblogs.com/YuanWeiBlogger/p/13598826.html
Copyright © 2020-2023  润新知