前言
格蕾修嘿嘿嘿~为什么标题把泛型和顺序表写在一起?没什么原因,纯粹是因为刚学了泛型,同时回顾和学习了顺序表,所以写在一起哈哈哈,这俩东西实际上没什么关系,但是可以让他们产生关系。
顺序表的实现其实还是蛮简单的,因为我在暑假的时候已经手撕过基本的一些数据结构,但是熟练度不够,而且我又新学了java,所以还是老老实实地把顺序表又敲了两遍,用java的语法,还是许多不一样的地方的。
泛型
什么是泛型?学接口的时候,看到很多库函数的源代码在用接口的时候,实际上都是用到了<>跟在接口或者类名的屁屁后面,当时也很迷惑;最近学完了虽然没有特别清楚,但是对什么是泛型和它的基本用法已经有了基本认识。
"<>"这个尖括号就是泛型的标志,正如我前面所说,用在接口和类名后面,那么它是干什么用的呢?
顾名思义,泛型,就是广泛的类型。准确的说是,它用来修类或接口,此时这个类能够接受的数据类型就变成了该类的子类,相当于是,传给任何该类的子类对象,都可以通过转型来接受。说到这里, 又深深感觉到面向对象设计的精妙之处,这里居然又和继承多态部分的向上转型接上了。
好了,这个就不多说了,一会结合顺序表给大家看个实例。
顺序表
顾名思义,就是按顺序存储数据的线性表,其底部实现是一个数组,我用整形数据简单模拟了顺序表实现的原理:
//MyArrayList.java
import java.util.Arrays;
public class MyArraylist {
public int[] elem;
public int usedSize;//0
//默认容量
private static final int DEFAULT_SIZE = 10;
public int capacity;//当前容量
public MyArraylist() {
this.capacity = DEFAULT_SIZE;
this.elem = new int[DEFAULT_SIZE];
}
// 打印顺序表
public void display() {
if(usedSize == 0){
System.out.println("当前ArrayList为空!");
return;
}
for(int i = 0;i < usedSize;i++){
System.out.print