2.用类封装数组实现数据结构

  1 /**
  2 用类封装数组实现数据结构
  3 一个数据结构必须具有以下基本功能:
  4 
  5   ①、如何插入一条新的数据项
  6 
  7   ②、如何寻找某一特定的数据项
  8 
  9   ③、如何删除某一特定的数据项
 10 
 11   ④、如何迭代的访问各个数据项,以便进行显示或其他操作
 12 */
 13 
 14 public class MyArray{
 15     //定义一个数组
 16     private int[] intArray;
 17     //定义数组的实际有效长度
 18     private int elems;
 19     //定义数组的最大长度
 20     private int length;
 21 
 22     //默认构造一个长度为50的数组
 23     public MyArray() {
 24         elems = 0;
 25         length = 50;
 26         intArray = new int[length];
 27     }
 28 
 29     //构造函数,初始化一个长度为length的数组
 30     public MyArray(int length) {
 31         elems = 0;
 32         this.length = length;
 33         intArray = new int[length];
 34     }
 35 
 36     //获取数组的有效长度
 37     public int getSize() {
 38         return elems;
 39     }
 40 
 41     /**
 42     遍历显示元素
 43     */
 44     public void display() {
 45         for (int i = 0 ; i < elems ; i++ ) {
 46             System.out.print(intArray[i]+" ");
 47         }
 48         System.out.println();
 49     }
 50 
 51     /**
 52     添加元素,假设使用者不会添加重复元素,如果有重复元素后面也会受到影响
 53     */
 54     public boolean add(int value) {
 55      if(elems == length)
 56          return false;
 57      else {
 58         intArray[elems] = value;
 59         elems++;
 60      }
 61      return true;
 62     }
 63 
 64     /**
 65     根据下标获取元素,查找下标值在数组下标有效范围内,返回下标表示的元素,超过
 66     有效值,提示访问下标越界
 67     */
 68 
 69     public int get(int i) {
 70         if(i < 0 || i >= elems)
 71             System.out.println("访问下标越界");
 72         return intArray[i];
 73     }
 74 
 75     /**
 76     查找元素
 77     如果查找的元素存在则返回下标值,不存在就返回-1
 78     */
 79     public int find(int searchValue) {
 80         int i;
 81         for(i=0; i < elems; i++) {
 82             if(intArray[i] == searchValue) {
 83                 return i;
 84             }
 85         
 86         }
 87         return -1;
 88     }
 89     /**
 90     删除元素
 91     如果要删除的值不存在,直接返回false;否则返回true,删除成功
 92     */
 93     public boolean delete(int value) {
 94         int k = find(value);
 95         if(k == -1) {
 96             return false;
 97         } else {
 98             if (k == elems -1) {
 99                 elems--;
100             } else {
101                 for(int i = k; i < elems-1; i++) {
102                     intArray[i] = intArray[i+1];
103                 }
104                 elems--;
105             }
106         }
107         return true;
108     }
109 
110     /**
111     *    修改数据,修改成功返回true,失败返回false
112     * @param oldValue 原值
113     * @param newValue 新值
114     */
115     public boolean modify(int oldValue,int newValue) {
116         int i = find(oldValue);
117         if(i == -1) {
118             System.out.println("需要修改的数据不存在");
119             return false;
120         } else {
121             intArray[i] = newValue;
122             return true;
123         }
124     }
125 }
 1 public class MyArrayTest{
 2     public static void main(String[] args) {
 3         //创建自定义封装数组结构,数组大小为4
 4         MyArray array = new MyArray(4);
 5         //添加4个元素分别是1,2,3,4
 6         array.add(1);
 7         array.add(2);
 8         array.add(3);
 9         array.add(4);
10         //显示数组元素
11         array.display();
12         //根据下标为0的元素
13         int i = array.get(0);
14         System.out.println(i);
15         //删除4的元素
16         array.delete(4);
17         //将元素3修改为33
18         array.modify(3, 33);
19         array.display();
20         //删除不存在的元素
21         System.out.println(array.delete(100));
22     }
23 }

原文地址:https://www.cnblogs.com/blogforvi/p/9444208.html