成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳細介紹Java中的抽象數據類型

開發 后端
本文主要介紹的是,java中的數據類型和抽象數據類型(ADT)的概念。我們還將通過介紹Java Collections Framework(Java 集合架構)來學習Java定義的一些ADT。

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

ADT

一個ADT是一個僅由保存的數據類型和可能在這個數據類型上進行的操作定義的。開發者們只能通過ADT的操作方法來訪問ADT的屬性,而且他們不會知道這個數據類型內部各種操作是如何實現的。

在Java中,我們常常使用一個接口來給出一個操作集合而不需要透露這些操作實現的細節。記住一個接口定義了一個方法集而Java類必須實現這個集合以便滿足它的強制性條件或者實現這個接口的一個實例。

線性表,堆棧和隊列

當我們談論ADT的時候,經常會說到線性表,堆棧和隊列。我們不會討論這些數據結構的細節,但我們會討論為什么它們被稱為ADT。

一個線性表是有限個元素的集合,其元素以線性的方式進行排列并提供對它的元素的直接訪問。一個堆棧是一個后進先出(LIFO)的有序線性表,元素從堆棧頭加入,并從堆棧頭取出。一個隊列是一個先進先出的有序線性表,元素從隊列尾加入,并從隊列頭取出。

線性表,堆棧和隊列的內部結構可以用許多方式實現。例如,我們可以使用一個有序數組或者一個鏈表來實現每個結構。關鍵的一點是不論你如何實現其內部結構,它對外的接口總是不變的。這使得你能夠修改或者升級底層的實現過程而不需要改變公共接口部分。

Java 集合架構

Java 2軟件開發包(SDK)提供了一些新類來支持大多數常用的ADT。這些類被稱為Java集合類(類似于MFC中的集合類),它們協同工作從而形成Java 集合架構。這個集合架構提供了一套將數據表示成所謂的集合抽象數據的接口和類。

java.util.Collection接口被用來表示任意的成組的對象,也就是元素。這個接口提供基本的諸如添加,刪除,和查詢這樣的操作。Collection接口還提供了一個iterator方法。iterator方法返回java.util.Iterator接口的一個實例。而Iterator接口又提供了hasNext, next, 和 remove方法。使用Iterator接口提供的方法,你可以從頭到尾循環遍歷一個Collection對象中的實例并能夠安全的刪除iterator(游標)所表示的元素。

java.util.AbstractCollection 是所有集合架構類的基礎。AbstractCollection 類提供了對java.util.Collection 接口中除iterator和size方法以外的所有方法的實現。這兩個例外的方法由所有繼承java.util.AbstractCollection的子類實現。

實現一個接口的類必須提供對所有接口方法的實現。因為集合架構中的一些接口方法是可選的,所以必須有一種方法來通知調用者某種方法沒有實現。當一個可選的方法被實現而這個方法又并沒有被實現的時候,就會拋出一個UnsupportedOperationException 異常。UnsupportedOperationException 類繼承了RuntimeException 類。這使得調用者能夠調用所有的集合操作而不需要把每次調用都放在一個try-catch對里。

List線性表

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

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

下面的例子演示了如何從后向前遍歷一個列表的元素。要完成這個工作,必須在遍歷開始之前把ListIterator定位于列表***一個元素之后。

  1. ListIterator iter = aList.listIterator(aList.size());  
  2. while (iter.hasPrevious())  
  3. System.out.println(iter.previous().toString());  

集合架構提供了對List接口的兩個實現:LinkedList(鏈表)和ArrayList(數組列表,即靜態列表)。這兩個實現都支持對其元素的隨機訪問。一個ArrayList實例支持數組風格的操作并支持數組大小的改變操作。一個LinkedList的實例則提供了在列表開始和結尾添加,刪除和提供元素的顯式的支持。使用這些新方法,一個程序員可以簡單的把一個LinedList當做堆棧或者隊列使用,如下:

  1. LinkedList aQueue = new LinkedList(aCollection);  
  2. aQueue.addFirst(newElement);  
  3. Object anElement = aQueue.removeLast();  
  4. LinkedList aStack = new LinkedList(aCollection);  
  5. aStack.addFirst(newElement);  
  6. Object anElement= aStack.removeFirst(); 

表A中的代碼片段使用java.util.ArrayList 和 java.util.LinkedList演示了對java.util.List接口的實現實例的一些常用的操作。這些操作包括添加元素,隨機訪問元素和顯式的在列表尾刪除元素。

知其然不知其所以然是大有好處的

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

 

責任編輯:于鐵 來源: 互聯網
相關推薦

2021-12-14 10:12:58

C++抽象數據

2021-02-22 09:02:16

數據抽象類型

2011-06-08 13:35:18

C#數據類型

2010-01-19 13:17:05

C++數據類型

2024-11-07 12:20:31

LinuxC語言數據類型

2011-07-11 15:02:54

枚舉

2010-10-27 14:52:04

ORACLE數據類型

2022-10-27 20:42:04

JavaScripJava編程語言

2011-08-04 15:14:39

Objective-C 數據類型

2009-11-09 14:15:17

WCF集合類型

2010-04-23 14:08:11

Oracle數據類型

2011-07-04 10:32:37

JAVA

2010-06-13 18:00:56

MySQL數據類型

2009-09-07 10:48:53

C#數據類型

2009-09-04 10:16:30

C#數據類型

2020-10-29 10:28:31

Java數據類型

2009-08-13 15:19:17

C#數據類型

2009-09-11 12:00:33

C#預定義數據類型

2011-07-11 11:02:12

JAVA集合框架

2011-07-21 15:44:33

Java內部類
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天色天天射天天干 | 午夜影视在线观看 | 亚洲自拍偷拍视频 | 久操亚洲 | 超碰在线人 | 久草新在线 | 亚洲精品大片 | www.日韩| 免费国产一区二区 | 天天操天天射天天 | 国产视频一区二区 | 暖暖成人免费视频 | 国产精品久久久久久妇女6080 | 欧美日韩一二区 | 欧美在线视频免费 | 久久91精品国产一区二区 | 在线播放国产一区二区三区 | 一级黄色毛片子 | 九色www| 毛片国产 | 日日日干干干 | 欧美最猛黑人xxxⅹ 粉嫩一区二区三区四区公司1 | 在线视频成人 | 中文字幕一区在线观看视频 | 国产一区二区免费电影 | 久久精品16 | 欧美视频在线播放 | 久久国产日本 | 国产精品美女久久久 | 亚洲二区视频 | 欧美jizzhd精品欧美巨大免费 | 亚洲综合大片69999 | 成人日批视频 | 天堂免费看片 | 亚洲成年在线 | 国内精品一区二区 | 国产亚洲成av人在线观看导航 | 欧美日韩国产在线观看 | 伊人网站在线 | 成人小视频在线观看 | 欧美xxxⅹ性欧美大片 |