版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第6章數(shù)組和集合內(nèi)容回顧掌握類的繼承的實現(xiàn) 繼承性、成員變量隱藏、成員方法重寫 this關(guān)鍵字理解抽象類和接口 上轉(zhuǎn)型對象、接口做參數(shù)理解類的多態(tài) 重載和重寫掌握包的創(chuàng)建和使用目標(biāo):掌握J(rèn)ava中一維、二維數(shù)組的定義和使用方法。掌握對象的存儲方式ArralyList、LinkedList、VectorHashSet、TreeSet、LinkedHashSetHashMap、TreeMap、LinkedHashMap6.1 數(shù)組數(shù)組是具有相同數(shù)據(jù)類型的元素按順序組成的一種集合。數(shù)組的長度一經(jīng)確定不能改變。在java中,把數(shù)組當(dāng)作對象來實現(xiàn)的。length屬性:數(shù)組元素的個數(shù)6.2.1 一維數(shù)組的
2、聲明 定義格式: 數(shù)組類型 數(shù)組名 ; 或 數(shù)組類型 數(shù)組名;數(shù)組類型可為Java中的任何數(shù)據(jù)類型。數(shù)組名,必須符合標(biāo)識符定義規(guī)則。 “ ”指明該變量是一個數(shù)組類型的變量,可放到數(shù)組名后面,也可放到數(shù)組名前。 int a;int a;注意:數(shù)組定義時沒有指定數(shù)組的長度,系統(tǒng)沒有為數(shù)組分配內(nèi)存空間,因此數(shù)組元素不能立即訪問。 int a ; a0=3;(X)6.2.1 一維數(shù)組的初始化1、賦初值初始化數(shù)組(靜態(tài)) 數(shù)組類型 數(shù)組名=初值表 int a =1,2,3;6.2.1 一維數(shù)組的初始化2、用new初始化數(shù)組(動態(tài))(1)先聲明數(shù)組再初始化數(shù)組名new 數(shù)組類型數(shù)組長度; int a; a
3、=new int10;(2)聲明的同時進行初始化數(shù)組類型 數(shù)組名 new 數(shù)組類型數(shù)組長度; int a=new int10;6.2.3 一維數(shù)組的引用 引用格式為: 數(shù)組名下標(biāo)int a=new int10;int b=a0+a9; 數(shù)組下標(biāo)為從0到9。數(shù)組有一個length屬性,表示數(shù)組的長度。 int a=new int10; a.length為10。練習(xí)已知整型數(shù)組a=3,5,2,1,4,對這個數(shù)組求最大值、求和以及排序操作。class UseArraypublic static void main(String args)int i,j,max=0,sum=0,temp=0;int
4、a=3,5,2,1,4;for(i=0;imax) max=ai;sum=sum+ai;System.out.println(“最大數(shù)是:+max);System.out.println(“數(shù)組和為:+sum);for(i=0;ia.length-1;i+)for(j=i+1;jaj)temp=ai; ai=aj; aj=temp; System.out.println(“排序后的結(jié)果:);for(i=0;ia.length;i+) System.out.println(a+i+=+ai); 6.3 多維數(shù)組123456789145678多維數(shù)組類似棋盤Java中沒有真正的多維數(shù)組,只有數(shù)組的
5、數(shù)組,Java中多維數(shù)組不一定是規(guī)則的矩陣形式6.3.1 二維數(shù)組的聲明定義格式為: 數(shù)組類型 數(shù)組名 ;或 數(shù)組類型 數(shù)組名;或 數(shù)組類型 數(shù)組名 ; int a; 或 int a; 或 int a; 數(shù)組的數(shù)組1.在數(shù)組聲明時為數(shù)組初始化(靜態(tài)) int a=1,2,3,4,5,6;6.3.1 二維數(shù)組的初始化2.使用new分配內(nèi)存空間(動態(tài))(1)直接分配空間,如: int a=new int22;(2)分別為各行分配空間,如: int a=new int2; a0=new int2; a1=new int3; (下頁舉例講解 聲明和初始化)6.3.1 二維數(shù)組的聲明int a =new
6、 int33; int a =new int3 ; a0=new int1; a1=new int3; a2=new int2;1234567891456786.3.2 二維數(shù)組的初始化1234int a =1,2,3,4 int a =new int22; a00=1; a01=2; a10=3; a11=4;6.3.2 二維數(shù)組的初始化 int a =new int3 ; a0=new int1; a00=1; a1=new int3; a10=4; a11=5; a12=6; a2=new int2; a20=7; a21=8;或:int a =1,4,5,6,7,8;1456786.3
7、 二維數(shù)組的引用引用格式為:數(shù)組名下標(biāo)1下標(biāo)2; 下標(biāo)1,下標(biāo)2分別表示二維數(shù)組的第一、二維下標(biāo)。二維數(shù)組有一個length屬性,表示數(shù)組的維數(shù),每一維有一個length屬性,表示每一維的長度。練習(xí):遍歷二維數(shù)組的所有元素已知二維數(shù)組b=2,3,1,3,3,3,5,對該二維數(shù)組的所有元素求和public class UseArray_2 public static void main(String args) int i,j,sum=0; int b=2,3,1,3,3,3,5; for(i=0;ib.length;i+) for(j=0;jbi.length;j+) sum=bij+sum;
8、 System.out.println(二維數(shù)組各元素的和:+sum); 6.4 數(shù)組的常用方法System.arraycopy()Arrays.sort()Arrays.binarySearch()說明:Arrays類在java.util包中,定義了關(guān)于數(shù)組的一系列的方法。可以通過幫助文檔,查看其他的方法。功能:復(fù)制數(shù)組格式:public static void arraycopy(object src,int src_pos , object dst, int dst_pos,int length)其中:src:源數(shù)組名 src_pos:源數(shù)組的起始位置 dst:目標(biāo)數(shù)組名 length:
9、復(fù)制的長度 dst_pos:目標(biāo)數(shù)組的起始位置 1. System.arraycopy()應(yīng)用舉例:使用arraycopy()復(fù)制數(shù)組class UseArrayCopypublic static void main(String args)int a=1,2,3,4,5,6,7;int b=new int6;int i;System.arraycopy(a,1,b,2,3);for(i=0;ib.length;i+)System.out.print(bi+ );調(diào)用arraycopy()2. Arrays.sort()功能:將數(shù)組按遞增排序格式: public static void sor
10、t(Object arrayname)public static void sort(Object a,int fromindex,int toindex)將數(shù)組起始位置到終止位置的數(shù)據(jù)進行排序應(yīng)用舉例:使用Sort()方法排序import java.util.*;class ArraySortpublic static void main(String args)int a=7,5,2,6,3;Arrays.sort(a);for(int i=0;ia.length;i+)System.out.print(ai+ );Arrays類包含在java.util文件包中調(diào)用Sort()方法輸出結(jié)果
11、:2 3 5 6 7應(yīng)用舉例:使用Sort()方法排序import java.util.*;class ArraySortpublic static void main(String args)int a=7,5,2,6,3;Arrays.sort(a,1,4);for(int i=0;ia.length;i+)System.out.print(ai+ );Arrays類包含在java.util文件包中調(diào)用Sort()方法輸出結(jié)果:7 2 5 6 3 功能:對已排序的數(shù)組進行二分法查找,并返回查找結(jié)果。如果找到,則返回元素所在位置;若沒有找到,則返回負(fù)數(shù)。語法格式: public static
12、 int binarySearch(Object a,Object key)其中,a為已排序好的數(shù)組,key為要查找的數(shù)據(jù)。3. Arrays.binarySearch()import java.util.*;class ArraySearchpublic static void main(String args)int a=2,4,5,7,9;int key=5,pos;pos=Arrays.binarySearch(a,key);if(pos0)System.out.println(元素+key+在數(shù)組中不存在);elseSystem.out.println(元素+key+在數(shù)組中的位置為
13、+pos);6.5集合CollectionSetListHashSetLinkedListArrayListMapHashMapVector6.5.1 ListList:可變長對象數(shù)組,元素類型必須是對象。ArrayList:擅長于隨機訪問元素,ArrayList中部插入和刪除元素的速度慢。LinkedList:順序訪問方便,插入和刪除也容易,和ArrayList相比,隨機訪問速度相對慢一點,但卻有其它的優(yōu)點。Vector:ArrayList比Vector速度快,如果涉及到多線程,還是使用Vector。6.5.1 List順序表:ArrayList、 LinkedList構(gòu)造方法ArrayLi
14、st()生成對象:常用方法:add(Object content); add(int index,Object content);get(int index);remove(intindex) remove(Object element)size() set(intindex, Objectelement) (舉例講解)ArrayList list = new ArrayList();6.5.2 Listimport java.util.ArrayList;public class ListEx public static void main(String args) ArrayList li
15、st = new ArrayList();list.add(1);list.add(2);list.add(2);list.add(3);System.out.println(list);自動封箱自動調(diào)用toString()6.5.2 HashSet無序可以不允許重復(fù):元素類型重寫hashCode()方法、equals()方法后, HashSet不再接受重復(fù)的元素。用法類似ArrayList6.5.2 HashSetimport java.util.HashSet;import java.util.Iterator;class HashSetTest public static void ma
16、in(String args) HashSet hs = new HashSet(); hs.add(new Student(1, zhangsan); hs.add(new Student(2, lisi); hs.add(new Student(1, zhangsan); Iterator it = hs.iterator(); while (it.hasNext() System.out.println(it.next().toString(); 6.5.2 HashSetclass Student int num; String name; Student(int num, Strin
17、g name) this.num = num; = name; public int hashCode()/ 重寫hashCode()方法 return num * name.hashCode(); public boolean equals(Object o)/重寫equals()方法 Student s = (Student) o; return num = s.num & name.equals(); public String toString() return num + : + name; 1:zhangsan3:wangwu2:lisiIterat
18、or接口所有實現(xiàn)了Collection接口的容器類都有一個iterator()方法,用于返回一個實現(xiàn)了Iterator接口的對象。Iterator對象稱作迭代器,用以方便的實現(xiàn)對容器內(nèi)元素的遍歷操作Iterator的主要方法:boolean hasNext();/判斷指針右邊是否有元素object next();/返回指針右邊的元素并將游標(biāo)移動到下一個位置void remove();刪除迭代器返回的最后一個元素next()next()next()6.5.3 Map(一對對象)以(鍵,值)的形式存放數(shù)據(jù)。生成對象:常用方法:put(K key, V value)get(Object key)re
19、move(Object key) size()HashMap map=new HashMap();6.5.3 Map(一對對象)import java.util.*;/檢查某個隨機數(shù)出現(xiàn)的次數(shù)public class Statistics public static void main(String args) Random random=new Random(); HashMap map=new HashMap(); for (int i = 0; i 20; i+) int r=random.nextInt(10); Integer freq=map.get(r); map.put(r, freq=null?1:freq+1); System.out.println(map); 總結(jié)List按數(shù)據(jù)寫入順序存儲,Set不允許有重復(fù)數(shù)據(jù)、Map存儲成對數(shù)據(jù)。ArrayList和LinkedList是可變長對象數(shù)組,ArrayList靈活于隨機訪問,L
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版小額貸款抵押合同資產(chǎn)評估及報告協(xié)議2篇
- 2025年度個人與公司租賃房屋修繕責(zé)任合同4篇
- 2025年度個人旅游規(guī)劃與導(dǎo)游服務(wù)合同2篇
- 2025版室外照明燈具廣告宣傳與品牌推廣合同3篇
- 2025年度煤炭行業(yè)綠色運輸體系構(gòu)建合同4篇
- 2025標(biāo)準(zhǔn)新能源材料研發(fā)與采購合作協(xié)議3篇
- 2025年度生態(tài)環(huán)保瓷磚批量采購合作協(xié)議3篇
- 2025版醫(yī)療健康大數(shù)據(jù)合作開發(fā)合同3篇
- 個性化定制小區(qū)房產(chǎn)買賣合同(2024版)版B版
- 2025版國際貿(mào)易糾紛訴訟擔(dān)保委托服務(wù)協(xié)議3篇
- 2025年山東浪潮集團限公司招聘25人高頻重點提升(共500題)附帶答案詳解
- 2024年財政部會計法律法規(guī)答題活動題目及答案一
- 2025年江西省港口集團招聘筆試參考題庫含答案解析
- (2024年)中國傳統(tǒng)文化介紹課件
- 液化氣安全檢查及整改方案
- 《冠心病》課件(完整版)
- 2024年云網(wǎng)安全應(yīng)知應(yīng)會考試題庫
- 公園保潔服務(wù)投標(biāo)方案
- 光伏電站項目合作開發(fā)合同協(xié)議書三方版
- 2024年秋季新滬教版九年級上冊化學(xué)課件 第2章 空氣與水資源第1節(jié) 空氣的組成
- 香港中文大學(xué)博士英文復(fù)試模板
評論
0/150
提交評論