• Java 集合框架_上


    集合框架被设计成要满足以下几个目标。

    • 该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。

    • 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。

    • 对一个集合的扩展和适应必须是简单的。

    1   Collection

      【1】Collection是java集合框架(collection-frame)中的顶层接口。

      【2】Collection接口表示一个容器,容器中只能存储引用数据类型,建议存同一类型的引用类型,方便后续遍历等操作。

      【3】List接口中容器中的元素可以是有序的、可重复的,称为。

          Set接口中也可能是无序的、唯一的。

       特点:

       1     集合常用方法

       (add     addAll)    (clear  remove  removeAll  retainAll)    改:()  查:(contains  containsAll  isEmpty  size)

        2    集合的遍历

         Iterable 可遍历的接口,集合接口继承于它,集合支持快速遍历

       Collection继承Iterable接口,表示集合支持快速遍历

         // 快速遍历
            // for-each
            // Object 表示元素类型 
            // item表示迭代变量
            // c1表示集合
            for (Object item : c1) {
                System.out.println(item.toString());

        Iterator接口类型,iterator()内部返回一个实现类实现类Iterator接口。这个实现类一定具有hasNext和next方法用于判断是否有下一个元素和获取下一个元素。快速遍历就是基于迭代器工作的。

    // 迭代器遍历(国内)
            Iterator it = c1.iterator();
            while(it.hasNext()) {
                Object item = it.next();
                System.out.println(item.toString());
            }
    // 国外
    for(Iterator it2=c1.iterator();it2.hasNext();) {
                Object item = it2.next();
                System.out.println(item.toString());
            }    

      3  List接口

                  特点:List 接口中的元素时有序的、可重复的。

           List基本常用方法

                增:       add()             addAll()     add(index,el)      addAll(index,collection)

                                删:       clear()           remove()   removeAll()        remove(index)

                                改:       set(index,el)

                   查        get(index)     indexOf()        lastIndexOf()

                         

           List接口遍历

            ListIterator 继承于Iterator,在Iterator的基础上提供了以正向遍历集合,也可以以逆序遍历集合。

            hasNext()   next ()以正向遍历

            hasPrevious()   previous ()以逆序遍历

        // 正向遍历
            ListIterator it2 = list1.listIterator();
            while(it2.hasNext()) {
                System.out.println(it2.next());
            }
            
            // 逆序遍历
            while(it2.hasPrevious()) {
                System.out.println(it2.previous());
         

        List接口实现类   

         ArrayList    

           【1】是List接口的实现类,底层数据结构是数组,实现大小可变的数组     

           【2】线程不安全,jdk1.2

           【3】默认数组大小是10。自动拓容,拓容原则:newCapacity = oldCapacity + oldCapacity / 2

           【4】如果确定序列的元素不在增加,通过调用trimToSize()调制容量至合适的空间

           Vector  

           【1】是List接口的实现类,底层数据结构也是数组,也是大小可变的数组。

           【2】是线程安全的,jdk1.0

           【3】默认数组大小是10。自动拓容,拓容原则:newCapacity = oldCapacity +capacityIncrement(增长因子)                          

           【4】通过调用trimToSize()调制容量至合适的空间

               注意:Vector 在实现List接口的同时,同添加了自身特有的方法xxxElement,未来使用时为了程序的可拓展性

        LinkedList   

           【1】是List接口的实现类,底层数据结构是链表。

           【2】线程不安全。

           【3】push入栈操作 / pop出栈操作

            【4】队列(Queue)接口add 入栈操作 remove出栈操作  element()  获取表头元素 可能会出现NoSuchElementException异常

           【5】队列(Queue)接口offer入栈操作poll出栈操作peek()获取表头元素 可能会返回特殊值(null)

           【6】双向队列(Deque)接口

                  

  • 相关阅读:
    office 2007 验证失败的解决方法
    google开不了(解决办法)
    Mobilenet V1
    Windows10系统下IDECLion的安装与配置
    单目相机成像过程
    C++中如何在函数中返回局部变量的指针/引用/地址?
    ResNeXt论文阅读笔记.md
    Mobilenet V2
    Xception
    InceptionV4
  • 原文地址:https://www.cnblogs.com/dedema/p/10816260.html
Copyright © 2020-2023  润新知