




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3章 數(shù)組與集合數(shù)組數(shù)組是一組具有相同類型的有序數(shù)據(jù)的集合。數(shù)組中的一個數(shù)據(jù)成員稱為數(shù)組元素。數(shù)組生成后,數(shù)組長度不可改變數(shù)組的定義與初始化(聲明創(chuàng)建初始化)int a; a=new int10;/10個元素,最大下標(biāo)9int a=new int10;/格式2:int a=.int a=1,2,3,4,5;/int a=.數(shù)組的訪問int b=a0;/下標(biāo)從0開始3.1 數(shù)組final int SIZE=10;int num=new intSIZE;for(int i=0;inum.length;i+)numi=(int)(Math.random()*10);System.out.print
2、(numi+ );System.out.println();int max=num0;for(int j=1;jmax) max=numj; System.out.println(max);程序分析:用隨機(jī)值初始化數(shù)組冒泡法求最值問題提出有沒有其它的求最值方法?求次大值、第三大值呢?能不能先排序再求最值?如何解決重復(fù)元素的問題?分析程序字符串?dāng)?shù)組與對象數(shù)組字符串?dāng)?shù)組字符串?dāng)?shù)組在初始化時創(chuàng)建對象數(shù)組可以將不同數(shù)據(jù)類型的元素封裝成對象數(shù)組Object a=new Object3;a0=new Integer(199901);a1=new String(“王平”);a2=new Double(75.
3、68);System.out.println(“學(xué)號 姓名 平均分”);for(int i=0;i3;i+) System.out.print(ai+” “);二維數(shù)組Java中的二維(多維)數(shù)組是特殊的一維數(shù)組二維定義與初始化int tmp;tmp=new int23;tmp= 1,2, 3,4, 5,6 數(shù)組的長度tmp.lengthArrays 數(shù)組工具類Arrays類中定義了5種類型的方法:asList(),將指定數(shù)組作為List返回;equals(),比較兩個數(shù)組是否相等;sort(),對不同類型的數(shù)組排序binarySearch(),在不同類型的數(shù)組中用二分查找算法搜索特定值;fi
4、ll(inta, intfromIndex, inttoIndex, intval)用一個指定的值填充數(shù)組3.2 集合數(shù)組與集合的比較數(shù)組和集合用于“保存多個數(shù)據(jù)/對象”當(dāng)無法預(yù)知數(shù)據(jù)量,或者需要比下標(biāo)更靈活的存取方式時,使用集合主要的集合類Collection集合接口List允許重復(fù)元素Set不允許重復(fù)元素Map鍵/值對Java集合框架簡圖List/Set/Map的區(qū)別List類(元素有序,可重復(fù))類描述AbstractCollection抽象類,實(shí)現(xiàn)大多數(shù)Collection接口中的方法AbstractList抽象類,繼承AbstractCollection并實(shí)現(xiàn)大多數(shù)List接口Abst
5、ractSequentialList抽象類,為了被類集使用并擴(kuò)展AbstractList,該類集使用連續(xù)而不是隨機(jī)方式訪問其元素ArrayList通過擴(kuò)展AbstractList來實(shí)現(xiàn)動態(tài)數(shù)組LinkedList通過繼承AbstractSequentialList來實(shí)現(xiàn)鏈接列表Vector可增長的動態(tài)數(shù)組,和ArrayList類似,線程安全,支持同步特性Stack繼承自Vector,實(shí)現(xiàn)了棧的數(shù)據(jù)結(jié)構(gòu)次序是List 的最重要特點(diǎn),它確保維護(hù)元素特定的順序. 實(shí)現(xiàn)List接口的類List類 子類的比較ArrayList支持隨需要而增長的動態(tài)數(shù)組,可以靈活的刪除或插入元素創(chuàng)建ArrayListAr
6、rayList al=new ArrayList();主要方法add(Object o)/追加或者插入clear()/清空contains()/查詢get(int index)/索引isEmpty()/判空remove(int index/Object o)/刪除toArrayList()/轉(zhuǎn)換成數(shù)組ArrayList應(yīng)用ArrayList al = new ArrayList();System.out.println(List的初始大小: + al.size();al.add(A);al.add(B);al.add(1, “A2”); /增加元素到指定位置,從0開始System.out.pr
7、intln(增加元數(shù)后的大小: + al.size();System.out.println(List中的內(nèi)容: + al);al.remove(“A);al.remove(1); /刪除index為2的元素System.out.println(al.get(1);LinkedList 類LinkedList類鏈接列表數(shù)據(jù)結(jié)構(gòu),插入、刪除對象的效率更高主要方法addFirst( )addLast( )getFirst( )getLast( )removeFirst( )removeLast( )LinkedList ll = new LinkedList(); ll.add(A);ll.add
8、(1,B);ll.addFirst(A3);ll.addLast(A4);Vector & StackVector類似于ArrayList,支持多線程線程同步機(jī)制使其性能變差Stack,實(shí)現(xiàn)后進(jìn)先出的棧主要方法:Empty()peek()/查看,不刪pop()/出棧push(E item)/入棧search(Object o)/返回對象在棧中的位置,1+元素的增刪數(shù)組 O(n)鏈表 O(1)元素的定位數(shù)組 O(1)鏈表 O(n)*大O表示法簡潔表示計算時間與數(shù)據(jù)量的關(guān)系數(shù)組與鏈表的性能優(yōu)劣實(shí)現(xiàn)Set接口的類(元素不可重復(fù))HashSet類 HashSet類集使用散列表進(jìn)行存儲關(guān)鍵字的內(nèi)容被生成
9、唯一值,稱散列碼hashcode散列碼被用作與關(guān)鍵字相連的數(shù)據(jù)的存儲下標(biāo)HashSet hs = new HashSet();hs.add(A);hs.add(B);hs.add(C);hs.add(D);hs.add(A);System.out.println(hs);結(jié)果:D, A, B, C元素并沒有按順序進(jìn)行存儲,并且也沒有重復(fù)元素TreeSet類 TreeSet 是使用樹結(jié)構(gòu)存儲的Set接口對象按升序存儲,訪問和檢索很快。適用于大量數(shù)據(jù)的快速檢索排序。TreeSet ts = new TreeSet();ts.add(D);ts.add(A);ts.add(B);ts.add(C);
10、ts.add(A);System.out.println(ts);程序輸出:A, B, C, DTreeSet按二叉排序樹存儲其元素,不能有重復(fù)元素實(shí)現(xiàn)Map接口的類(鍵值對) 映射接口(Map) 映射(Map)是一個存儲關(guān)鍵字和值的關(guān)聯(lián)或者說是關(guān)鍵字/值對的對象。給定一個關(guān)鍵字,可以得到它的值關(guān)鍵字和值都是對象,每一對為一項(xiàng)關(guān)鍵字必須是唯一的,但值可以重復(fù)有些映射可以接收null關(guān)鍵字/值,有的則不行 Map接口的方法void clear( )boolean isEmpty( )boolean containsKey(Object k)Set keySet( )boolean contain
11、sValue(Object v)Object put(Object k, Object v)Set entrySet( )void putAll(Map m)Boolean equals(Object obj)Object remove(Object k)Object get(Object k)int size( )int hashCode( )Collection values( )HashMap 類 HashMap類使用散列表實(shí)現(xiàn)Map接口 Map map=new HashMap(); map.put(a, aaa); map.put(b, bbb); map.put(c, ccc); m
12、ap.put(d, ddd); Iterator iterator = map.keySet().iterator(); while (iterator.hasNext() Object key = iterator.next(); System.out.println(map.get(key) is :+map.get(key); 運(yùn)行結(jié)果:map.get(key) is :dddmap.get(key) is :bbbmap.get(key) is :cccmap.get(key) is :aaaTreeMap 類 TreeMap類通過使用樹實(shí)現(xiàn)Map接口。允許快速檢索; 保證元素按照關(guān)鍵
13、字升序排序TreeMap tmp=new TreeMap(); tmp.put(a, aaa); tmp.put(b, bbb); tmp.put(c, ccc); tmp.put(d, ddd); Iterator iterator_2 = tmp.keySet().iterator(); while (iterator_2.hasNext() Object key = iterator_2.next(); System.out.println(tmp.get(key)is :+tmp.get(key); 運(yùn)行結(jié)果:tmp.get(key)is :aaatmp.get(key)is :bbb
14、tmp.get(key)is :ccctmp.get(key)is :dddJava.util.Hashtable提供了種方法讓用戶使用哈希表,而不需要考慮其哈希表真正如何工作。插入檢索刪除HashTable實(shí)現(xiàn)了線程安全的HashMapHashTable 類數(shù)組與各集合類的區(qū)別與聯(lián)系每一種集合的特點(diǎn)與應(yīng)用場景“集合是基于數(shù)組實(shí)現(xiàn)的”,請嘗試用你的方法來實(shí)現(xiàn)這一命題。小結(jié)與思考3.3 Generics(泛型) Generics是JDK 5新增加的功能,在使用集合時,提供了一種編譯時類型安全檢查功能,并能減少類型強(qiáng)制轉(zhuǎn)化的麻煩。當(dāng)你從一個集合中取出一個元素時,例如使用Iterator接口中的next()方法,其返回值的類型是Object,在使用這個元素時,需要把返回值轉(zhuǎn)換為元素本身的類型。這種類型轉(zhuǎn)化是不安全的。 未使用泛型的代碼ArrayList a=new ArrayList();a.add(new Integer(1);a.add(new Integer(2);for(Iterator i=a.iterator();i.hasNext();)int i1 = (Integer)i.next().intVal
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國飲用水行業(yè)現(xiàn)狀分析及投資十三五規(guī)劃研究報告
- 2025-2030年中國陸上貨物運(yùn)輸保險市場運(yùn)行狀況及發(fā)展風(fēng)險評估報告
- 2025湖南省建筑安全員-B證考試題庫及答案
- 2025-2030年中國鋁合金型材市場十三五規(guī)劃及發(fā)展建議分析報告
- 2025-2030年中國營林及木竹采伐機(jī)械制造產(chǎn)業(yè)需求分析及發(fā)展?fàn)顩r預(yù)測報告
- 2025-2030年中國航模行業(yè)競爭格局及投資戰(zhàn)略研究報告
- 2025-2030年中國羅漢果茶市場發(fā)展現(xiàn)狀及前景規(guī)劃研究報告
- 2025-2030年中國紅薯淀粉市場運(yùn)營狀況及前景預(yù)測分析報告
- 2025-2030年中國端氨基聚醚行業(yè)風(fēng)險評估及發(fā)展策略研究報告
- 2025-2030年中國電工機(jī)械專用設(shè)備制造市場規(guī)模分析及投資策略研究報告
- 五年級下冊數(shù)學(xué)課內(nèi)每日計算小紙條
- 2024年度中國寵物行業(yè)研究報告
- 工業(yè)自動化控制系統(tǒng)升級與維護(hù)服務(wù)合同
- 定崗定編定員實(shí)施方案(5篇)
- 藥品經(jīng)營質(zhì)量管理規(guī)范
- 爆破工程師培訓(xùn)
- 2024年云南省公務(wù)員考試《行測》真題及答案解析
- 教科版初中物理八年級下冊知識梳理
- 《飛科電器公司盈利能力存在的問題及完善對策(7800字論文)》
- 零星維修工程項(xiàng)目施工方案1
- 楚辭離騷的原文全文完整注音版、拼音版標(biāo)準(zhǔn)翻譯譯文及注釋
評論
0/150
提交評論