Java图书管理系统练习程序(四)

Java图书管理系统练习程序(四)

本部分主要介绍List的基本操作与Java中泛型的使用。

一、Java中泛型的使用

泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可称之为类型参数),然后在使用/调用时传入具体的类型(类型实参)。

泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

例1.编写一个类,将任意一个整数(int)按下面格式输出,“我是一个数:100”。

那么这个类很好写,如下

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();
    }
}

这就是泛型的一种使用,称为泛型类

1.泛型类

class 类名称 <泛型标识>{

    private 泛型标识 成员变量名;

......

}

注意:

        泛型的类型参数只能是类类型(包括自定义类),不能是简单类型(比如int与Integer)

        传入的实参类型需与泛型的类型参数类型相同,

如OutNumber<Integer> o1=new OutNumber<>(10);

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文档。

猜你喜欢

转载自my.oschina.net/u/3537796/blog/2413986