Java泛型和集合

    xiaoxiao2022-07-05  172

    一、泛型之泛型类          1、在jdk1.2之后,Java提供了实现常见数据结构的类,这些实现数据结构的类通常称为Java集合框架。在JDK1.5后,Java集合框架开始支持泛型。         泛型(Generics)是在JDK1.5之后推出的,其主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构。     2、泛型类:         可以使用"class 名称 <泛型列表>"声明一个类,为了和普通的类有所区别,这样声明的类称为泛型类,如:         class ShowObject <E>         其中ShowObject是泛型类的名称,E是其中的泛型类,E并没有指定是何种数据类型的数据,他可以是任何对象或接口,但不能是基本数据类型。         ShowObject类可以用泛型E作为自己的一个成员或方法中的参数,ShowObject.java的代码如下:         public class ShowObject<E> {             public showMess(E b){                 String mess = b.toString(); //范型变量只能调用toString()方法                 System.out.println(mess);             }}

        3、使用泛型类声明对象         泛型类声明和创建对象时,类名后多了一对"<>",而且必须要使用具体的类型替换"<>"中的泛型。例如:         ShowObject<A>  showA;         showA = new ShowObject<A>();

    二、泛型之泛型接口              1、可以使用"interface名称<泛型列表>"声明一个接口,这样声明的接口称作泛型接口如:         interface Listen<E>{   void listen(E x); }        其中,Listen<E>是泛型接口的名称,E是其中的泛型,泛型类和普通类都可以实现泛型接口,但普通类实现泛型接口时,必须指定泛型接口中泛型列表中的具体类型。

        2、泛型的目的:Java泛型的主要目的是可以建立具有类型安全的数据结构,如链表、散列表等数据结构,最重要的一个优点是,在使用这些泛型类建立数据结构时,不必进行强制         类型转换,即运行时不进行类型检查。JDK1.5是支持泛型的编译器,它将运行时的类型检查提前到编译时执行,使代码更安全。

    三、集合之List          1、Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为Java集合框架(JavaCollectionFramework)。        Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应用就可以了,这样大大提高了编程效率。                Collection                           Map        - List                                  -HashMap         -ArrayList                         -HashTable         -LinkedList         -Vector            -Stack        - Set         -HashSet         -TreeSet     2、List是有序的Collection,使用这个接口能精确的控制每个元素插入的位置,用户能够使用索引来访问List中的元素,跟数组类似。        List允许有相同的元素,实现List接口的常用类LinkedList、ArrayList、Vector和Stack。

        3、ArrayList 实现了可变大小的数组,它允许所有元素,包括null。        每个ArrayList例程都有一个容量(Capacity),用于存储元素的数组的大小,这个容量可以随不断添加新元素而自动增加,当需要插入大量元素时,在插入前可以调用ensureCapacity方法来        增加ArrayList的容量以提高插入效率。

        4、LinkedList实现了List接口,允许null元素,此外LinkedList提供额外的get、remove、insert方法在LinkedList的首部或尾部,这些操作使LinkedList可被用做堆栈(stack),队列(queue)或双向队列(deque)

    四、集合之Set和Map          1、Set不保存重复的元素,因此存入Set的每个元素都必须是唯一的,同时Set接口不保证维护元素的次序。     2、HashSet 不允许出现重复元素、不保证集合中元素的顺序、允许包含值为null的元素,但最多只能有一个null元素。     3、java为数据结构中的映射定义了一个接口java.util.Map,它有四个实现类,分别是HashMap、HashTable、LinkedHashMap和TreeMap,Map主要用于存储键值对,根据键得到值,因此不允许键重复,但允许值重复。        Hashmap是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。        HashMap最多只允许一条记录的键为null,允许多条记录的值为null。

    最新回复(0)