Java图书管理系统练习程序(四)数组
本部分主要介绍List的基本操做与Java中泛型的使用。this
1、Java中泛型的使用对象
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,而后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,相似于方法中的变量参数,此时类型也定义成参数形式(可称之为类型参数),而后在使用/调用时传入具体的类型(类型实参)。索引
泛型的本质是为了参数化类型(在不建立新的类型的状况下,经过泛型指定的不一样类型来控制形参具体限制的类型)。也就是说在泛型使用过程当中,操做的数据类型被指定为一个参数,这种参数能够用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。接口
例1.编写一个类,将任意一个整数(int)按下面格式输出,“我是一个数:100”。内存
那么这个类很好写,以下rem
public class OutNumber { private int n; public OutNumber(int n){ this.n=n; } public void printN(){ System.out.println("我是一个数 :"+n); } }
那么接下来,咱们要再写一个类,将一个字符串(String)也要按如下的格式输出,那么这个类也很简单,代码以下:文档
public class OutSting { private String n; public OutSting(String n){ this.n=n; } public void printN(){ System.out.println("我是一个数:"+n); } }
仔细分析以上两个类,咱们发现,这两个类对数据处理的方法是相同的,只是处理的类型是不一样的。若是咱们能够写一个类,定义类时,并不指明数据的类型,在使用的时候再指明类型。那么咱们能够采用如下的方式。字符串
public class OutNumber<E> { private E n; public OutNumber(E n){ this.n=n; } public void printN(){ System.out.println("我是一个数:"+n); } }
public class Demo1 { public static void main(String[] args) { OutNumber<Integer> o1=new OutNumber<>(10); o1.printN(); OutNumber<String> o12=new OutNumber<>("字符串 "); o12.printN(); } }
这就是泛型的一种使用,称为泛型类get
1.泛型类
class 类名称 <泛型标识>{
private 泛型标识 成员变量名;
......
}
注意:
泛型的类型参数只能是类类型(包括自定义类),不能是简单类型(好比int与Integer)
传入的实参类型需与泛型的类型参数类型相同,
如OutNumber<Integer> o1=new OutNumber<>(10);
2.泛型接口
其使用方法与泛型类基本相同。
在本练习程序中,主要使用了泛型类和泛型接口。
2、List的基本操做
在本练习程序中,若是采用数组存放若干个用户的信息,在声明数组时,就必须同时声明数组的长度,即咱们的程序只能存储多少个用户,若是咱们声明的过大,会形成内存的浪费,若是咱们声明的数组过小,即长度太短,会形成数据溢出的错误。
而List能够解决这个问题。它的大小是动态可改变的,其存储的数据类型也是多样的。例如如下代码
List<Student> lists=new ArrayList<>();
在以上代码中,List是一个接口,ArrayList是该接口的一个实现类。经过以上代码,咱们即建立一个存储Student对象的集合。
1.向集合中添加、删除元素
Student student=new Student(1,"张三丰","武当山"); lists.add(student);//将student对象添加到集合中 lists.remove(student);//将student对象从集合中移除
2.判断List中是否包含某个元素
lists.contains(student)
3.根据元素在集合中的索引值取得元素
Student stu=lists.get(0);
4.取得对象在集合中的索引值
lists.indexOf(student);
5.判断集合是否为空
lists.isEmpty();
以上是在本练习程序中,用到的有关List集合的相关内容。其它的方法,能够参考Java API文档。