代码不全只是自己记录学习,借鉴:https://blog.csdn.net/javazejian/article/details/52953190;强烈推荐此大神博客。。。
1.泛型的创建
创建接口
public interface FanXing_Test<T> { int get(); }
创建class
public class FanXing_calss<T> implements FanXing_Test<T> { @Override public int get() { return 0; } }
调用方法
public class test{ public static void main(String[] args) { FanXing_calss<Integer> test=new FanXing_calss<>(); } }
T会自动转换数据类型,实现统用型
2.构造方法,创建对象时初始化对象
private Object[] table; //数组声明,用于存储元素,开辟内存空间 private int length; //顺序表的大小,就是数组内储存数据的个数 所以length-1就是最大的索引位置 public SeqList(int capacity) { //申请数组存储空间,元素初始化为null 构造方法,开辟内存空间 this.table = new Object[Math.abs(capacity)]; this.length = 0; } /** * 默认大小为64 */ public SeqList() { this(64); }
3.arraylist删除和添加的方法
/** * 根据index插入元素 * @param index 插入位置的下标,0作为起始值 * @param data 插入的数据 * @return */ @Override public boolean add(int index, T data) { if (data==null) return false; //插入下标的容错判断,插入在最前面 if (index<0) index=0; //插入下标的容错判断,插入在最后面 this.length是最大所以呢 加1 if (index>this.length) index = this.length; //判断内部数组是否已满 if (this.length==table.length)//这里是table.length初始化的64 { //把原数组赋值给临时数组 Object[] temp = this.table; //对原来的数组进行成倍拓容,并把原数组的元素复制到新数组 this.table = new Object[temp.length*2]; //先把原数组下标从0到index-1(即插入位置的前一个位置)复制到新数组 for (int i=0; i<index; i++) { this.table[i] = temp[i]; } } //从原数组的最后一个元素开始直到index位置,都往后一个位置 // 最终腾出来的位置就是新插入元素的位置了 for (int j=this.length-1; j>=index; j--) {//只有在j>=index时才执行 length是该数组的内有几个具体数据的长度 //index是插入元素的在申请内存空间的位置 this.table[j + 1] = this.table[j]; } //如果j(最大索引)<插入索引直接插入数据 //插入新值 this.table[index] = data; //长度加一 this.length++; //插入成功 return true; } /** * 在尾部插入元素 * @param data * @return */ @Override public boolean add(T data) { return add(this.length, data); } /** * 根据index删除元素 * @param index 需要删除元素的下标 * @return */ @Override public T remove(int index) { if (this.length!=0 && index>=0 && index<this.length) { //记录删除元素的值并返回 T old = (T)this.table[index]; //从被删除的元素位置开,其后的元素都依次往前移动 for (int j=index; j<this.length-1; j++) { this.table[j] = this.table[j + 1]; } //设置数组元素对象为空 this.table[this.length-1]=null; //顺序表长度减1 this.length--; return old; } return null; } /** * 根据data删除某个数据 * @param data * @return */ @Override public boolean remove(T data) { if (this.length!=0 && data!=null) return this.remove(this.indexOf(data))!=null; return false; }