1. java框架,數據結構
早在Java 2中之前,Java就提供了特設類。比如:向量(Vector)、棧(Stack)、字典(Dictionary)、哈希表(Hashtable)這些類(數據結構)用來讓改賣存儲和操作對象組。雖然這些類都非常有用,但是它們缺少一個核心的,統一的主題。集合框架是為表示和操作集合而規定的一種統一的標準的體系結構。除了集合,該框架(framework)也定義了幾個Map介面和類。Map里存儲的是鍵/值對。盡管Map不是collections,但是它們完全整合在集合中。
所有的集合框架都包含如下內容:
介面:是代表集合的抽象數據類型。介面允許集合獨立操縱其代表的細節。在面向對象的語言,介面通常形成一個層次。
實現(類):是集合介面的具體實現。從本質上講,它們是可重復使用的數坦逗據結構。
演算法:是實現集合介面的對象里的方法執行的一些有用的計算,例如:搜索和排序。這些演算法被稱為多態,那是因殲早為相同的方法可以在相似的介面上有著不同的實現。
集合框架的類和介面均在java.util包中。
2. java中都有哪些數據結構
數據結構:
①數組 (Array)
在程序設計中,為了處理方便, 把具有相同類型的若干變數按有序的形式組織起來。這些按序排列的同類數
據元素的集合稱為數組。在C語言中, 數組屬於構造數據類型。一個數組可以分解為多個數組元素,這些數組
元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字元數組、指
針數組、結構數組等各種類別。
②棧 (Stack)
棧是只能在某一端插入和刪除的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後
的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)。
③隊列 (Queue)
一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行
插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。
④鏈表 (Linked List)
一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。
鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:
一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。
⑤樹 (Tree)
樹是包含n(n>0)個結點的有窮集合K,且在K中定義了一個關系N,N滿足 以下條件:
(1)有且僅有一個結點 k0,他對於關系N來說沒有前驅,稱K0為樹的根結點。簡稱為根(root)
(2)除K0外,k中的每個結點,對於關系N來說有且僅有一個前驅。
(3)K中各結點,對關系N來說可以有m個後繼(m>=0)。
⑥堆 (Heap)
在計算機科學中,堆是一種特殊的樹形數據結構,每個結點都有一個值。通常我們所說的堆的數據結構,是指
二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。
⑦圖 (Graph)
圖是由結點的有窮集合V和邊的集合E組成。其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點,
邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關系。
⑧散列表 (Hash)
若結構中存在關鍵字和K相等的記錄,則必定在f(K)的存儲位置上。由此,不需比較便可直接取得所查記錄。稱
這個對應關系f為散列函數(Hash function),按這個思想建立的表為散列表。
差不多我就知道這些了~
3. java常用的幾種數據結構,堆棧,隊列,數組,鏈
下面給你簡單介紹:堆棧,隊列,數組,鏈表
堆棧
採用該結構的集合,對元素的存取有如下的特點:
先進後出(即,存進去的元素,要在後它後面的元素依次取出後,才能取出該元素)。例如,子彈壓進彈夾,先壓進去的子彈在下面,後壓進去的子彈在上面,當開槍時,先彈出上面的子彈,然後才能彈出下面的子彈。
棧的入口、出口的都是棧的頂端位置
壓棧:就是存元素。即,把元素存儲到棧的頂端位置,棧中已有元素依次向棧底方向移動一個位置。
彈棧:就是取元素。即,把棧的頂端位置元素取出,棧中已有元素依次向棧頂方向移動一個位置。
隊列
採用該結構的集合,對元素的存取有如下的特點:
先進先出(即,存進去的元素,要在後它前面的元素依次取出後,才能取出該元素)。例如,安檢。排成一列,每個人依次檢查,只有前面的人全部檢查完畢後,才能排到當前的人進行檢查。隊列的入口、出口各佔一側。
數組
採用該結構的集合,對元素的存取有如下的特點:
查找快:通過索引,可以快速訪問指定位置的元素
增刪慢:
指定索引位置增加元素:需要創建一個新數組,將指定新元素存儲在指定索引位置,再把原數組元素根據索引,復制到新數組對應索引的位置。
鏈表
採用該結構的集合,對元素的存取有如下的特點:
多個節點之間,通過地址進行連接。例如,多個人手拉手,每個人使用自己的右手拉住下個人的左手,依次類推,這樣多個人就連在一起了。
節點:兩個部分:數據域(存儲的數值),指針域(存儲地址)
查找慢:想查找某個元素,需要通過連接的節點,依次向後查找指定元素
增刪快:
增加元素:操作如左圖,只需要修改連接下個元素的地址即可。
刪除元素:操作如右圖,只需要修改連接下個元素的地址即可。
4. JAVA數據結構哪些
主要是3種介面:List Set Map
List:ArrayList,LinkedList:順序表ArrayList,鏈表LinkedList,堆棧和隊列可以使用LinkedList模擬
Set:HashSet沒有重復記錄的集合
Map:HashMap就是哈希表
二叉樹可以利用遞歸的思想來模擬自行設計,從JDK5開始還提供了一個新的隊列介面
圖!!!沒遇到過這樣的情況,恐怕還是要自己模擬
5. java八大數據結構要學多久
2個月。因為運行環境需要一天,關鍵詞需要一天,數據類型、運算符需要一天,條件結構、循環結構給你一周,方法重載、數組給你一周。面向對象、這個、構造方法,差不多一周就夠了。常用API、繼承與多態、聚合、異常、多線程、網路編程常用的API給你一天,繼承和多態給你一天,聚集給你一個星期,多線程(入門)、網路編程給你一個星期,所以大概要2個月左右。
6. JAVA數據結構
public class CallNotes {
String name;
String phoneNumber;
static Map<String,String> noteMap=null;
static List<CallLog> logList=null;
CallNotes(){
this.noteMap = new HashMap<String,String>();
this.logList = new ArrayList<CallLog>();
}
void addRecord(String name,String number){
noteMap.put(name,number);
}
void removeRecord(String name){
noteMap.remove(name);
}
String searchPhoneNumber(String name){
String number=null;
number = noteMap.get(name);
logList.add(new CallLog(name, number, new Date()));
return number;
}
void outputCallLog(CallLog log){
if(log==null) return ;
log.outputLog();
}
class CallLog{
String name;
String number;
Date date;
CallLog(String name,String num,Date date) {
this.name=name;
this.number=num;
this.date=date;
}
void outputLog(){
System.out.println("name:"+this.name);
System.out.println("number:"+this.number);
System.out.println("date:"+this.date);
}
}
}
用HashMap實現可以嗎?