第6章數(shù)組、字符串及容器類_第1頁
第6章數(shù)組、字符串及容器類_第2頁
第6章數(shù)組、字符串及容器類_第3頁
第6章數(shù)組、字符串及容器類_第4頁
第6章數(shù)組、字符串及容器類_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第6章章 數(shù)組、字符串及容器類數(shù)組、字符串及容器類 數(shù)組類型屬于復(fù)合數(shù)據(jù)類型,它是由類型相同的元素組成的有序的數(shù)據(jù)集合。因此數(shù)組最主要的特點(diǎn)是:(1)元素類型相同;(2)元素有序;(3)所有元素公用一個(gè)名稱。 另外,根據(jù)組織數(shù)組的結(jié)構(gòu)不同,數(shù)組可以分為一維數(shù)組、二維數(shù)組、,依此類推。第第6 6章章 數(shù)組、字符串及容器類數(shù)組、字符串及容器類n6.1一維數(shù)組n6.2多維數(shù)組n6.3字符串處理 n6.4數(shù)組與容器的比較 n6.5容器n6.6迭代器n6.7容器的分類法n6.8總結(jié)n6.9習(xí)題6.16.1一維數(shù)組一維數(shù)組 n6.1.1一維數(shù)組的聲明 n6.1.2一維數(shù)組的初始化 n6.1.3一維數(shù)組的

2、引用 6.1.16.1.1一維數(shù)組的聲明一維數(shù)組的聲明n數(shù)組聲明的語法格式有以下兩種:arraytype array-name;或arraytype array-name;n例如:int month_days;或int month_days;6.1.26.1.2一維數(shù)組的初始化一維數(shù)組的初始化 n靜態(tài)初始化是在定義數(shù)組的同時(shí)對(duì)數(shù)組元素進(jìn)行初始化:String strName = “I”,”like”,”Java!”;String strName = “I”,”like”,”Java!”; n數(shù)組的動(dòng)態(tài)初始化 :數(shù)組名 = new數(shù)組元素類型長(zhǎng)度;即:array-name = new typea

3、rraySize; P1246.1.36.1.3一維數(shù)組的引用一維數(shù)組的引用 n所謂數(shù)組元素的引用,指的是如何在程序中引用初始化后的數(shù)組元素,引用的方式為arrayNameindex,其中index為數(shù)組的下標(biāo),可以是整型常數(shù)、變量和表達(dá)式,范圍是從0開始,一直到數(shù)組的長(zhǎng)度減一。 例如:int a = 1,2,3,4,5;a0=1;a1=2; a2=3; a3=4; a4=5;p125 6.26.2多維數(shù)組多維數(shù)組n6.2.1二維數(shù)組的聲明 n6.2.2二維數(shù)組的初始化 n6.2.3二維數(shù)組的引用 6.2.16.2.1二維數(shù)組的聲明二維數(shù)組的聲明 n二維數(shù)組和一維數(shù)組一樣,也必須先聲明再創(chuàng)建,

4、聲明和創(chuàng)建也可以合在一條語句中完成。二維數(shù)組聲明的格式為:數(shù)組元素類型 數(shù)組名;或數(shù)組元素類型 數(shù)組名;6.2.26.2.2二維數(shù)組的初始化二維數(shù)組的初始化n二維數(shù)組的初始化也分為靜態(tài)初始化和動(dòng)態(tài)初始化兩種。所謂靜態(tài)初始化,就是在定義二維數(shù)組的同時(shí)為數(shù)組分配了空間,如下:int int_array =1,1,1,2,2,2,3,3,3;n對(duì)于二維數(shù)組的動(dòng)態(tài)初始化,可以有兩種方法:(1)直接為每一維分配空間,格式如下:arrayName = new typearrayLen1 arrayLen2;(2)從最高維開始,分別為每一維分配空間,格式如下:arrayName = new type arr

5、ayLen1; 6.2.36.2.3二維數(shù)組的引用二維數(shù)組的引用n 對(duì)二維數(shù)組中元素的引用格式如下:arrayNameindex1index2;其中arrayName代表二維數(shù)組的名稱,index1和index2是下標(biāo),與一維數(shù)組一樣,這兩個(gè)下標(biāo)可以是常數(shù)、變量和表達(dá)式,如int_array 12、int_array a1、int_array a*20,而且每一維的下標(biāo)都是從0開始,一直到該維長(zhǎng)度減一。p129頁6.36.3字符串處理字符串處理 n6.3.1生成字符串n6.3.2訪問字符串 n6.3.3修改字符串 n6.3.4其他操作 6.3.16.3.1生成字符串生成字符串n1.構(gòu)造Stri

6、ng實(shí)例對(duì)象的方法 構(gòu)造String實(shí)例對(duì)象的方法主要有三種: (1)采用雙引號(hào)將Java字符序列括起來,既通過構(gòu)造字符串直接量的方式構(gòu)造String實(shí)例對(duì)象。 例如:String s1=”abcd”; (2)采用new運(yùn)算符 例如:String s1=new String(); (3)通過運(yùn)算符”+”或其他成員方法生成String實(shí)例對(duì)象。 例如: String s1=”abcd”+”1234”; 6.3.16.3.1生成字符串生成字符串n2.StringBuffer類的主要構(gòu)造方法 (1)public StringBuffer() 創(chuàng)建一個(gè)空的StringBuffer類; (2)publi

7、c StringBuffer(int length) 創(chuàng)建一個(gè)大小為length的StringBuffer類; (3)public StringBuffer(String str) 按str創(chuàng)建一個(gè)動(dòng)態(tài)可變的StringBuffer類。6.3.26.3.2訪問字符串訪問字符串 n所謂訪問字符串,就是獲得字符串的長(zhǎng)度,得到某個(gè)字符或子串在字符串中的索引位置獲得到指定位置的字符或字串。 1.String類的常用方法 2.StringBuffer類的常用方法6.3.36.3.3修改字符串修改字符串n在對(duì)字符串的操作中,經(jīng)常會(huì)對(duì)給定的字符串進(jìn)行一些修改操作,在本小節(jié)中,我們將對(duì)類String和Stri

8、ngBuffer中提供的一些字符串修改方法進(jìn)行介紹,主要是介紹String類提供的幾種方法。 6.3.46.3.4其他操作其他操作n這里將介紹一些與字符串有關(guān)的其他方法,例如:1.startsWith(String preString)和endWith(String endString) 2.startsWith(String preString,int offsetInd)3.equals()和equalsIgnoreCase()6.46.4數(shù)組與容器類的比較數(shù)組與容器類的比較n6.4.1數(shù)組與容器類的區(qū)別 n6.4.2Arrays類 6.4.16.4.1數(shù)組與容器類的區(qū)別數(shù)組與容器類的區(qū)別

9、 (1)效率 (2)類型(3)持有基本類型的能力 6.4.16.4.1數(shù)組與容器類的區(qū)別數(shù)組與容器類的區(qū)別 n數(shù)組的簡(jiǎn)單實(shí)例:n實(shí)際上我們無論使用哪種數(shù)組,數(shù)組的標(biāo)識(shí)符都只是一個(gè)引用,可以作為數(shù)組初始化的一部分隱式的創(chuàng)建這個(gè)對(duì)象,或用new表達(dá)式顯式的來創(chuàng)建。length方法表示數(shù)組對(duì)象能夠存儲(chǔ)多少元素,“”操作符是訪問數(shù)組對(duì)象的唯一一種方式 。6.4.16.4.1數(shù)組與容器類的區(qū)別數(shù)組與容器類的區(qū)別n基本類型的容器:基本類型的容器:n數(shù)組可以保存對(duì)象的引用,也可以直接保存基本類型,而容器類只能保存對(duì)象的引用。當(dāng)然容器中可以使用包裝類,如Integer,Byte,Double等,用來代替基本類

10、型的值。但是相對(duì)于基本數(shù)據(jù)類型,包裝類使用起來不是很方便。 6.4.2Arrays6.4.2Arrays類類n填充數(shù)組 n復(fù)制數(shù)組 n比較數(shù)組 n比較數(shù)組元素 nbinarySearch()的用法 6.56.5容器容器n6.5.1容器類簡(jiǎn)介n6.5.2容器的填充n6.5.3容器的缺點(diǎn)6.5.16.5.1容器類簡(jiǎn)介容器類簡(jiǎn)介 Java2容器類類庫(kù)的用途是“保存對(duì)象”,它分為兩類: Collection:一組獨(dú)立的元素,通常這些元素都服從某種規(guī)則。List必須保持元素特定的順序,而Set不能有重復(fù)元素。 Map:一組成對(duì)的“鍵值對(duì)”對(duì)象,即其元素是成對(duì)的對(duì)象 。6.5.26.5.2容器的填充容器的

11、填充 nCollections也有一個(gè)非常實(shí)用的static方法集,其中有一個(gè)fill()方法,該方法的作用也是用同一個(gè)對(duì)象的引用來填充容器,并只對(duì)List對(duì)象起作用,而對(duì)Set或Map不起作用。 6.5.36.5.3容器的缺點(diǎn)容器的缺點(diǎn) (1)我們將對(duì)象的引用加入容器時(shí)就丟失了類型的信息,也就是說對(duì)于放入容器的對(duì)象就沒有類型限制了,即便是我們刻意保持容器的類型,別人也可以輕易的對(duì)其進(jìn)行修改。(2)由于丟失了類型信息,容器只能認(rèn)為它保存的是Object類型的引用。因此在使用容器中的元素之前一定要做類型轉(zhuǎn)換 。6.66.6迭代器迭代器n迭代器是一種設(shè)計(jì)模式,它是一個(gè)對(duì)象,它可以遍歷并選擇序列中的

12、對(duì)象,而開發(fā)人員不需要了解該序列的底層結(jié)構(gòu)。迭代器通常被稱為“輕量級(jí)”對(duì)象,因?yàn)閯?chuàng)建它的代價(jià)小。Java中的Iterator功能比較簡(jiǎn)單,并且只能單向移動(dòng): (1)iterator()方法:要求容器返回一個(gè)Iterator。第一次調(diào)用Iterator的next()方法,它將返回序列中的第一個(gè)元素; (2)next()方法:獲得序列中的下一個(gè)元素; (3)hasNext()方法:檢查序列中是否還有元素; (4)remove()方法:將迭代器新返回的元素刪除。 6.76.7容器的分類法容器的分類法n6.7.1Collection 接口 n6.7.2List接口 n6.7.3Set接口 n6.7.4

13、Map接口 n6.7.5Java集合類對(duì)equals()和hashCode()方法的要求 6.7.1Collection 6.7.1Collection 接口接口 nCollection類的方法 boolean add(Object obj) boolean remove(Object obj) int size() boolean isEmpty() boolean contains(Object obj) Iterator iterator() boolean containsAll(Collection c) boolean addAll(Collection c) void clear

14、() void removeAll(Collection c) void retainAll(Collection c) 6.7.2List6.7.2List接口接口 n(1) 面向位置的操作包括插入某個(gè)元素或者Collection的功能,還包括獲取、除去或更改元素的功能。在 List 中搜索元素可以從列表的頭部或尾部開始,如果找到元素,將報(bào)告元素所在的位置 。n(2) List 接口不但能以位置序列迭代的遍歷整個(gè)列表,而且還能處理集合的子集 。6.7.2List6.7.2List接口接口nLinkedList的主要方法 void addFirst(Object obj)void addLas

15、t(Object obj)Object getFirst()Object getLast()Object removeFirst()Object removeLast()LinkedList()LinkedList(Collection c) 6.7.2List6.7.2List接口接口nArrayList類的主要方法 void ensureCapacity(int minCapacity)void trimToSize()6.7.3Set6.7.3Set接口接口nSet 接口繼承 Collection 接口,而且它不允許集合中存在重復(fù)項(xiàng),每個(gè)具體的 Set 實(shí)現(xiàn)類依賴添加的對(duì)象的 equal

16、s()方法來檢查獨(dú)一性。Set接口沒有引入新方法,所以Set就是一個(gè)Collection,只不過其行為不同 。6.7.3Set6.7.3Set接口接口nSortedSet類的主要方法 Comparator comparator()Object first()Object last()SortedSet subSet(Object beginElement, Object endElement)SortedSet headSet(Object endElement)SortedSet tailSet(Object beginElement)6.7.3Set6.7.3Set接口接口nHashSet

17、類的主要方法 HashSet()HashSet(Collection c)HashSet(int initCapacity)HashSet(int initCapacity, float loadFactor)6.7.3Set6.7.3Set接口接口nTreeSet類的主要方法 TreeSet()TreeSet(Collection c)TreeSet(Comparator c)TreeSet(SortedSet s)6.7.3Set6.7.3Set接口接口nLinkedHashSet類的主要方法 LinkedHashSet()LinkedHashSet(Collection c)Linked

18、HashSet(int initCapacity)LinkedHashSet(int initCapacity, float loadFactor)6.7.4Map6.7.4Map接口接口nMap接口的主要方法 Object put(Object key, Object value)Object remove(Object key)void putAll(Map t)void clear() Object get(Object key)boolean containsKey(Object key)boolean containsValue(Object value)int size()bool

19、ean isEmpty() Set keySet()Collection values()6.7.5Java6.7.5Java集合類對(duì)集合類對(duì)equals()equals()和和hashCode()hashCode()方法的要求方法的要求 n為了保證Java集合正常工作,有些Java集合類HashSet、TreeSet、HashMap、TreeMap對(duì)存放的對(duì)象有特殊的要求。n另外,要了解重寫hashCode()的重要性 。 6.86.8總結(jié)總結(jié) 本章主要介紹了一維數(shù)組、二維數(shù)組以及字符串的處理,其中對(duì)一維數(shù)組和二維數(shù)組主要介紹了它們?nèi)绾温暶?,如何初始化以及如何引?。 另外我們對(duì)字符串處理的介紹,主要包括字符串的生成,訪問,修改和其他相關(guān)操作。 最后我們介紹了數(shù)組與容器類比較,然后著重介紹的就是容器類的內(nèi)容,同時(shí),對(duì)Java集合類中非常重要的兩個(gè)方法:equals()和hashCode()方法進(jìn)行了說明。 練習(xí)(練習(xí)(1)1.定義一個(gè)長(zhǎng)度為10的整數(shù)數(shù)組,然后將1120分別賦給數(shù)組元素,計(jì)算該數(shù)組中下標(biāo)為偶數(shù)的元素的和。2.寫一個(gè)方法,完成替換字符串中的子串的功能。3.寫一個(gè)程序,用來計(jì)算單詞在一個(gè)文本文件中的重復(fù)出現(xiàn)的次數(shù)。4.Java數(shù)組的特點(diǎn)是什么?如何創(chuàng)建和使用對(duì)象數(shù)組。5.編寫一個(gè)程序,使用二維數(shù)組來求解線性方程組。 練習(xí)(練習(xí)(2)6.閱讀下面的程序,看看是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論