zoukankan      html  css  js  c++  java
  • 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)接口

                  

  • 相关阅读:
    linux sysfs (2)
    微软——助您启动云的力量网络虚拟盛会
    Windows Azure入门教学系列 全面更新啦!
    与Advanced Telemetry创始人兼 CTO, Tom Naylor的访谈
    Windows Azure AppFabric概述
    Windows Azure Extra Small Instances Public Beta版本发布
    DataMarket 一月内容更新
    和Steve, Wade 一起学习如何使用Windows Azure Startup Tasks
    现实世界的Windows Azure:与eCraft的 Nicklas Andersson(CTO),Peter Löfgren(项目经理)以及Jörgen Westerling(CCO)的访谈
    正确使用Windows Azure 中的VM Role
  • 原文地址:https://www.cnblogs.com/dedema/p/10816260.html
Copyright © 2011-2022 走看看