最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

面向對象編程:Java中的抽象數(shù)據(jù)類型

 更新時間:2006年12月23日 00:00:00   作者:  
文章來源:互聯(lián)網(wǎng) 作者:PaleSting/CSDN

 在本文中,我們將考察Java中的數(shù)據(jù)類型,但是我們將介紹抽象數(shù)據(jù)類型(ADT)的概念。我們還將通過介紹Java Collections Framework(Java 集合架構)來學習Java定義的一些ADT。

   ADT

   一個ADT是一個僅由保存的數(shù)據(jù)類型和可能在這個數(shù)據(jù)類型上進行的操作定義的。開發(fā)者們只能通過ADT的操作方法來訪問ADT的屬性,而且他們不會知道這個數(shù)據(jù)類型內(nèi)部各種操作是如何實現(xiàn)的。
  
   在Java中,我們常常使用一個接口來給出一個操作集合而不需要透露這些操作實現(xiàn)的細節(jié)。記住一個接口定義了一個方法集而Java類必須實現(xiàn)這個集合以便滿足它的強制性條件或者實現(xiàn)這個接口的一個實例。
  
   線性表,堆棧和隊列

  當我們談論ADT的時候,經(jīng)常會說到線性表,堆棧和隊列。我們不會討論這些數(shù)據(jù)結構的細節(jié),但我們會討論為什么它們被稱為ADT。
  
   一個線性表是有限個元素的集合,其元素以線性的方式進行排列并提供對它的元素的直接訪問。一個堆棧是一個后進先出(LIFO)的有序線性表,元素從堆棧頭加入,并從堆棧頭取出。一個隊列是一個先進先出的有序線性表,元素從隊列尾加入,并從隊列頭取出。
  
   線性表,堆棧和隊列的內(nèi)部結構可以用許多方式實現(xiàn)。例如,我們可以使用一個有序數(shù)組或者一個鏈表來實現(xiàn)每個結構。關鍵的一點是不論你如何實現(xiàn)其內(nèi)部結構,它對外的接口總是不變的。這使得你能夠修改或者升級底層的實現(xiàn)過程而不需要改變公共接口部分。

  Java 集合架構

  Java 2軟件開發(fā)包(SDK)提供了一些新類來支持大多數(shù)常用的ADT。這些類被稱為Java集合類(類似于MFC中的集合類),它們協(xié)同工作從而形成Java 集合架構。這個集合架構提供了一套將數(shù)據(jù)表示成所謂的集合抽象數(shù)據(jù)的接口和類。
  
   java.util.Collection接口被用來表示任意的成組的對象,也就是元素。這個接口提供基本的諸如添加,刪除,和查詢這樣的操作。Collection接口還提供了一個iterator方法。iterator方法返回java.util.Iterator接口的一個實例。而Iterator接口又提供了hasNext, next, 和 remove方法。使用Iterator接口提供的方法,你可以從頭到尾循環(huán)遍歷一個Collection對象中的實例并能夠安全的刪除iterator(游標)所表示的元素。
  
   java.util.AbstractCollection 是所有集合架構類的基礎。AbstractCollection 類提供了對  java.util.Collection 接口中除iterator和size方法以外的所有方法的實現(xiàn)。這兩個例外的方法由所有繼承java.util.AbstractCollection的子類實現(xiàn)。
  
   實現(xiàn)一個接口的類必須提供對所有接口方法的實現(xiàn)。因為集合架構中的一些接口方法是可選的,所以必須有一種方法來通知調用者某種方法沒有實現(xiàn)。當一個可選的方法被實現(xiàn)而這個方法又并沒有被實現(xiàn)的時候,就會拋出一個UnsupportedOperationException 異常。UnsupportedOperationException 類繼承了RuntimeException 類。這使得調用者能夠調用所有的集合操作而不需要把每次調用都放在一個try-catch對里。
  
   List線性表

   List接口繼承了Collection接口并定義了一個允許相同元素存在的有序集合。List接口還附加了一些使用一個數(shù)值型索引值并基于元素在線性表中的位置來操作Collection中元素的方法。這些操作包括add,get,set和remove。

   List接口還提供了listIterator方法。這個方法返回java.util.ListIterator 接口的一個實例,這個實例能夠讓你從頭至尾或者從尾至頭的遍歷一個線性表。java.util.ListIterator 繼承了java.util.Iterator 接口。因此,它支持對它代表的Collection中的元素的添加和修改。

  下面的例子演示了如何從后向前遍歷一個列表的元素。要完成這個工作,必須在遍歷開始之前把ListIterator定位于列表最后一個元素之后。
  
   ListIterator iter = aList.listIterator(aList.size());
   while (iter.hasPrevious())
   System.out.println(iter.previous().toString());
   }
   集合架構提供了對List接口的兩個實現(xiàn):LinkedList(鏈表)和ArrayList(數(shù)組列表,即靜態(tài)列表)。這兩個實現(xiàn)都支持對其元素的隨機訪問。一個ArrayList實例支持數(shù)組風格的操作并支持數(shù)組大小的改變操作。一個LinkedList的實例則提供了在列表開始和結尾添加,刪除和提供元素的顯式的支持。使用這些新方法,一個程序員可以簡單的把一個LinedList當做堆?;蛘哧犃惺褂?,如下:
  
   LinkedList aQueue = new LinkedList(aCollection);
   aQueue.addFirst(newElement);
   Object   anElement = aQueue.removeLast();
   LinkedList  aStack = new LinkedList(aCollection);
   aStack.addFirst(newElement);
   Object   anElement= aStack.removeFirst();
   表A中的代碼片段使用java.util.ArrayList 和 java.util.LinkedList演示了對java.util.List接口的實現(xiàn)實例的一些常用的操作。這些操作包括添加元素,隨機訪問元素和顯式的在列表尾刪除元素。
  
   知其然不知其所以然是大有好處的

   ADT提供了一個將對象公共接口中的操作和其具體的實現(xiàn)分開的強有力的工具。這使得一個ADT的實現(xiàn)可以不斷變化和演化同時保持其公共接口不變。Java集合架構提供了大量的接口和其實現(xiàn)用來代表基本元素的集合并可以用來創(chuàng)建有用的ADT。

相關文章

  • Java matches類,Pattern類及matcher類用法示例

    Java matches類,Pattern類及matcher類用法示例

    這篇文章主要介紹了Java matches類,Pattern類及matcher類用法,結合實例形式分析了java matches類,Pattern類及matcher類針對字符串常見操作技巧與相關注意事項,需要的朋友可以參考下
    2019-03-03
  • logback 實現(xiàn)給變量指定默認值

    logback 實現(xiàn)給變量指定默認值

    這篇文章主要介紹了logback 實現(xiàn)給變量指定默認值操作,具有很好的參考家價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中日期與時間的處理及工具類封裝詳解

    Java中日期與時間的處理及工具類封裝詳解

    在項目開發(fā)中免不了有對日期時間的處理,但Java中關于日期時間的類太多了,本文就來介紹一下各種類的使用及我們項目中應該怎么選擇吧
    2023-07-07
  • Java 獲取當前類名和方法名的實現(xiàn)方法

    Java 獲取當前類名和方法名的實現(xiàn)方法

    這篇文章主要介紹了 Java 獲取當前類名和方法名的實現(xiàn)方法的相關資料,這里不僅提供了實現(xiàn)方法并比較幾種方法的效率,需要的朋友可以參考下
    2017-07-07
  • java反射機制Reflection詳解

    java反射機制Reflection詳解

    在本篇文章里小編給大家分享了關于java反射機制Reflection的相關知識點,需要的朋友們學習下。
    2019-04-04
  • SpringData關鍵字查詢實現(xiàn)方法詳解

    SpringData關鍵字查詢實現(xiàn)方法詳解

    這篇文章主要介紹了SpringData關鍵字查詢實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Java獲取服務器IP及端口的方法實例分析

    Java獲取服務器IP及端口的方法實例分析

    這篇文章主要介紹了Java獲取服務器IP及端口的方法,結合實例形式分析了java針對客戶端及服務器端各種常見的信息操作技巧與注意事項,需要的朋友可以參考下
    2018-12-12
  • 微服務架構設計RocketMQ進階事務消息原理詳解

    微服務架構設計RocketMQ進階事務消息原理詳解

    這篇文章主要介紹了為大家介紹了微服務架構中RocketMQ進階層面事務消息的原理詳解,有需要的朋友可以借鑒參考下希望能夠有所幫助
    2021-10-10
  • java判斷ftp目錄是否存在的方法

    java判斷ftp目錄是否存在的方法

    這篇文章主要為大家詳細介紹了java判斷ftp目錄是否存在的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 基于springboot+enum配置化的方法

    基于springboot+enum配置化的方法

    本文主要介紹利用Springboot結合枚舉類enum進行自定義參數(shù)的初始化和應用,通過@Value注解實現(xiàn)參數(shù)的動態(tài)注入,以實現(xiàn)靈活可維護的配置管理,具有一定的參考價值,感興趣的可以了解一下
    2024-09-09

最新評論

盱眙县| 二连浩特市| 海淀区| 确山县| 讷河市| 盐津县| 吴旗县| 桃园县| 新郑市| 北京市| 当阳市| 长丰县| 玉龙| 西藏| 仲巴县| 延安市| 石柱| 万荣县| 镇平县| 塘沽区| 宁强县| 兰坪| 宝鸡市| 和龙市| 鄂尔多斯市| 浦北县| 游戏| 循化| 卫辉市| 基隆市| 化德县| 博兴县| 西乌珠穆沁旗| 扎囊县| 达孜县| 黄陵县| 横峰县| 鄂州市| 汾阳市| 陇川县| 阜康市|