Java泛型和集合

一、泛型之泛型类
    
    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。

发布了91 篇原创文章 · 获赞 160 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/weixin_40204595/article/details/90447398