1 /*线性表的数组实现
2 *特点:插入删除慢需要平均移动一半的数据,查找较快
3 *注意:有重复和无重复的数据对应的操作会有些不同
4 *注意数组一旦创建其大小就固定了
5 *Java集合长度可变是由于创建新的数组将原来旧的数据复制过去--这些附加功能牺牲了效率
6 *主要实现以下几个功能
7 *1.线性表查找
8 *2.线性表删除
9 *3.线性表的插入存储一个元素(无序数组插入)
10 * */
11 public class MyArray {
12
13 private long[] arr;
14 private int items;//记录数组元素个数--关键
15
16 public MyArray(int max) {//max记录数组长度
17 this.arr = new long[max];
18 items = 0;
19 }
20
21 public int size(){
22 return items;
23 }
24 //按照值查找
25 public boolean find(long searchKey){
26 int index = 0;
27 for(int i = 0; i < items; i++){
28 if(searchKey == arr[i]){
29 index = i;
30 break;
31 }
32 }
33 if(index == items){
34 return false;
35 }
36 else{
37 return true;
38 }
39 }
40
41 //存储元素
42 public void insert(long key){
43 arr[items] = key;
44 items++;
45 }
46
47 //删除一个元素--按照值
48 public boolean delete(long key){
49 //遍历数组--先找到元素
50 int i;
51 for(i = 0; i < items; i++){
52 if(key == arr[i]){
53 break;
54 }
55 }
56 if(i== items){
57 return false;
58 }
59 else{
60 //向左边移动操作
61 for(int k = i;k < items; k++){
62 arr[k] = arr[k+1];
63 }
64 items--;
65 return true;
66 }
67 }
68
69 public void displayArray(){
70 for(int i = 0;i < items;i++){
71 System.out.print(arr[i] + " ");
72 }
73 System.out.println();
74 }
75 }