package cheapter2_2;
public class Homework<E> {
final int initcapacity = 10;
public E[] data;
public int size;
private int capacity;
//构造方法
public Homework(){
data = (E[])new Object[initcapacity];
capacity = initcapacity;
size = 0;
}
//创建线性表
public void CreateList(E[] a) //由a整体建立顺序表
{
int i,k=0;
for (i=0;i<a.length;i++) {
if (size==capacity) //出现上溢出时
updatecapacity(2*size); //扩大容量
data[k]=a[i];
k++; //添加的元素个数增加1
}
size=k; //设置长度
}
//更新容量
public void updatecapacity(int newcapacity){
E[] newdata = (E[]) new Object[newcapacity];
for(int i = 0;i<size;i++)
newdata[i] = data[i];
capacity = newcapacity;
data = newdata;
}
//创建删除方法:删除原线性表中值为负数的值
public void RemoveNegativeNum(Homework E){
for(int j = 0;j<size;j++){
int x = (int) E.data[j];
if(x<0)
data[j] = data[j+1];
size--;
}
if(capacity > initcapacity && size == capacity/4)
updatecapacity(capacity/2);
}
}
//测试类
package cheapter2_2;
public class HomeworkTest {
public static void main(String[] args){
Integer [] a={1,2,-1,-2,3,-3};
Homework<Integer> L1=new Homework<Integer>();
L1.CreateList(a);
System.out.println("删除前L1:"+L1.toString());
L1.RemoveNegativeNum(L1);
System.out.println("删除后L1:"+L1.toString());
Integer [] b={2,-1,-5,6,-7,4,-5,8};
Homework<Integer> L2=new Homework<Integer>();
L1.CreateList(b);
System.out.println("删除前L2:"+L2.toString());
L2.RemoveNegativeNum(L2);
System.out.println("删除后L2:"+L2.toString());
}
}
重写一下toSpring方法
运行结果
删除前L1:Homework{initcapacity=10, data=[1, 2, -1, -2, 3, -3, null, null, null, null], size=6, capacity=10}
删除后L1:Homework{initcapacity=10, data=[1, 2, -2, -2, 3, -3, null, null, null, null], size=3, capacity=10}
删除前L2:Homework{initcapacity=10, data=[null, null, null, null, null, null, null, null, null, null], size=0, capacity=10}
删除后L2:Homework{initcapacity=10, data=[null, null, null, null, null, null, null, null, null, null], size=0, capacity=10}
//新添加代码
@Override
public String toString() {
return "Homework{" +
"initcapacity=" + initcapacity +
", data=" + Arrays.toString(data) +
", size=" + size +
", capacity=" + capacity +
'}';
}
运行出来是这个:
删除前L1:cheapter2_2.Homework@15db9742
删除后L1:cheapter2_2.Homework@15db9742
删除前L2:cheapter2_2.Homework@6d06d69c
删除后L2:cheapter2_2.Homework@6d06d69c
有点弄不懂了