版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、List(列表)List的主要特征是按照元素以線性方式存儲(chǔ),允許集合中存放重復(fù)對(duì)象。List接口的主要實(shí)現(xiàn)類包括:ArrayList和LinkedList。ArrayList:代表長度可以變化的數(shù)組。允許對(duì)元素進(jìn)行快速的隨機(jī)訪問,但是向ArrayList中插入與刪除元素速度較慢。10652115headList(列表)LinkedList:雙向鏈表。向LinkedList中插入和刪除元素的速度較快,隨機(jī)訪問的速度較慢。它單獨(dú)具有addFirst() 、addLast()、getFirst()、getLast()、removeFirst()、removeLast()方法。10152156head
2、訪問List中的元素List中的對(duì)象按照索引位置排序,程序可以按照對(duì)象在集合中的索引位置來檢索對(duì)象。List list= new ArrayList();list.add(new Integer(3);list.add(new Integer(4);list.add(new Integer(3);list.add(new Integer(2);for(int i=0;ilist.size();i+) System.out.print(list.get(i)+” ”);Iterator it = list.iterator();while (it.hasNext() System.out.pri
3、nt(it.next()+” ”);List本身不帶有排序功能List本身不帶有排序的功能。Collections類是對(duì)Java集合類庫中的輔助類,它提供操縱集合的各種靜態(tài)方法。sort(List list):對(duì)List中的對(duì)象進(jìn)行自然排序。sort(List list,Comparator comparator):對(duì)List中的對(duì)象進(jìn)行自定義排序, comparator參數(shù)指定排序方式。為List排序List list= new ArrayList();list.add(new Integer(3);list.add(new Integer(4);list.add(new Integer(3
4、);list.add(new Integer(2);Collections.sort(list);for(int i=0;iv3K2-v1K3-v2K1-v1Map(映射)向Map集合中加入元素時(shí),必須提供一對(duì)鍵對(duì)象和值對(duì)象。Map的兩個(gè)主要實(shí)現(xiàn)類:HashMap和TreeMap。Map(映射)Map最基本的用法,就是提供類似字典的能力。在Map中檢索元素時(shí),只要給出鍵對(duì)象,就會(huì)返回值對(duì)象。Map map=new HashMap();map.put(1,Monday);map.put(one,Monday);map.put(2,Tuesday);map.put(3,Wensday);Syste
5、m.out.println(map.get(“1);System.out.println(map.get(one);Map接口中的方法public Set keySet(): 返回鍵的集合。public Set entrySet(): 返回“鍵值對(duì)”的集合。Map.Entry的對(duì)象代表一個(gè)“詞條”,就是一個(gè)鍵值對(duì)??梢詮闹腥≈祷蜴I。Map接口中的方法不保證順序Map map =new HashMap ();map.put(1,Monday);map.put(one,Monday);map.put(2,Tuesday);map.put(3,Wensday);Set x=map.entrySet(
6、);Iterator i=x.iterator();while(i.hasNext() Map.Entry en=(Map.Entry)i.next(); String key=(String)en.getKey(); String value=(String)en.getValue(); System.out.println(key+ +value);輸出:3 Wensday2 Tuesday1 Mondayone MondayHashMap(不保證順序)HashMap按照哈希算法來存取鍵值對(duì)象。為了保證HashMap能正常工作,和HashSet一樣,要求當(dāng)兩個(gè)鍵對(duì)象通過equals()方法
7、比較為true時(shí),這兩個(gè)鍵對(duì)象的hashCode()方法的返回的哈希碼也一樣。TreeMapTreeMap實(shí)現(xiàn)了SortedSet接口,能夠?qū)Φ逆I對(duì)象進(jìn)行排序。支持自然排序和自定義排序。Map map =new TreeMap ();map.put(1,Monday);map.put(one,Monday);map.put(2,Tuesday);map.put(3,Wensday);Set keys=map.keySet();Iterator it=keys.iterator();while(it.hasNext()String key=(String)it.next();String val
8、ue=(String)map.get(key);System.out.println(key+ +value);輸出:1 Monday2 Tuesday3 Wensdayone Monday泛型 GenericInteger list=(Integer)set.toArray(new Integer0);Object list=set.toArray();sum=sum+(Integer)listi;Iterator it=set.iterator();sum=sum+(Integer) it.next();Iterator it=keys.iterator();while(it.hasNex
9、t()String key=(String)it.next();String value=(String)map.get(key);這些錯(cuò)誤在編譯的時(shí)候是無法檢查出來的運(yùn)行時(shí)異常Set set=new HashSet(); set.add(new StringBuffer(Mike); return set;public void printSet(Set set)Iterator it=set.iterator();while(it.hasNext() String str=(String)it.next(); /可能會(huì)拋出ClassCastException System.out.prin
10、tln(str);對(duì)于軟件來說,錯(cuò)誤發(fā)現(xiàn)的越早,越能降低軟件開發(fā)和維護(hù)的成本。從而提高軟件的健壯性。為了做到這一點(diǎn),在JDK版本升級(jí)過程中,致力于把一些運(yùn)行時(shí)異常轉(zhuǎn)變?yōu)榫幾g時(shí)錯(cuò)誤。在JDK1.5版本中,引入泛型的概念,它把ClassCastException運(yùn)行時(shí)異常轉(zhuǎn)變?yōu)榫幾g時(shí)類型不匹配錯(cuò)誤。泛型的例子/集合中元素必須為String類型Set set=new HashSet(); set.add(“Tom”); /合法/編譯出錯(cuò),類型不匹配set.add(new StringBuffer(“Mike”); /元素必須為StringList list=new ArrayList(); list
11、.add(“Tom”); /合法String name=list.get(0); /合法,無需強(qiáng)制類型轉(zhuǎn)換Object obj=list.get(0); /合法,允許向上轉(zhuǎn)型/編譯出錯(cuò),無法類型轉(zhuǎn)換StringBuffer sb=(StringBuffer)list.get(0); 泛型的例子Map map=new HashMap();Iterator it=map.keySet().iterator();while(it.hasNext() String key=it.next(); String value=map.get(key);Set set=new HashSet ();Itera
12、tor it=set.iterator();while(it.hasNext() String key=it.next(); 如何定義一個(gè)支持泛型的類public class MySet T t;public MySet() public void set(T t)this.t=t;public T get()return t; 支持泛型的類public class MyMap private K k;private V v;public MyMap() public void put(K k,V v)this.k=k; this.v=v;public K getK()return k;pub
13、lic V getV()return v;泛型的優(yōu)點(diǎn)取消了強(qiáng)制類型轉(zhuǎn)換;在編譯時(shí)候發(fā)現(xiàn)問題;List list=new ArrayList();list.put(5);/編譯不報(bào)錯(cuò)String s=(String)list.get(0);/運(yùn)行報(bào)錯(cuò)List list=new ArrayList();list.put(5); /編譯報(bào)錯(cuò)String s=list.get(0);java中使用泛型的例子public interface Iterator E next();.public interface Iterable Iterator iterator();.public interface
14、 Collection extends Iterable boolean add(E e);.public interface List extends Collection boolean add(E e);.public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable public boolean add(E e) .泛型結(jié)束后,重新考慮自定義排序問題 關(guān)于Comparator Java.util.Comparator接口提供具體的排序方式
15、,指定被比較的對(duì)象的類型,Comparator有個(gè)compare(Type x,Type y)方法,用于比較兩個(gè)對(duì)象的大小。compare(x, y)的返回值為0,則表示x和y相等,如果返回值大于0,則表示x大于y,如果返回值小于0,則表示x小于y。public interface Comparator int compare(T o1, T o2);下次上課每名同學(xué)帶筆記本,充滿電!排序的實(shí)現(xiàn)方法匯總源代碼參見:ch08. SortDemo注意枚舉類型:EnumField/EnumOrder比較器:StudentComparator自定義排序如果希望TreeSet按照Student對(duì)象的na
16、me屬性進(jìn)行降序排列,可以先創(chuàng)建一個(gè)實(shí)現(xiàn)Comparator接口的類StudentComparator。StudentComparator類就是一個(gè)自定義的比較器。List/Set/Map總結(jié)Java集合類框圖SetCollectionListAbstractCollectionAbstractListAbstracSetSortedSetTreeSetHashSetAbstractSquentialListLinkedList接口抽象類具體類繼承實(shí)現(xiàn)ArrayListVectorJava集合類框圖MapHashMapSortedMapLinkedHashMapTreeMap接口抽象類具體類繼
17、承實(shí)現(xiàn)Collection 方法描述public boolean add(E e)向集合中增加元素public boolean addAll(Collectionc)向集合中加入一組數(shù)據(jù),泛型指定了操作上限public void clear()清空所有的內(nèi)容public boolean contains(Object o)判斷是否有指定的內(nèi)容查找public boolean containsAll(Collection c)查找一組數(shù)據(jù)是否存在public boolean equals(Object o)對(duì)象比較public int hashCode() 返回hash碼public boole
18、an isEmpty() 判斷集合的內(nèi)容是否為空public iterator()interator()為interrator接口實(shí)例化 迭代輸出public boolean remove(Object o) 從集合中刪除指定的對(duì)象boolean removeAll(Collection c) 從集合中刪除一組對(duì)象public boolea retainAll(Collection c)保留集合中的指定內(nèi)容public int size()取得集合的長度public Object toArray()取得全部的內(nèi)容,以數(shù)組的形式返回public toArray(T a ) 取得全部的內(nèi)容List
19、 在Collection中增加方法描述public void add(int index, E element) 在指定的位置處加入一個(gè)元素public boolean addAll(Collection c)在指定的位置加入一組元素public E get(int index)通過索引位置可以取出每個(gè)元素public ListIterator listIterator() 為ListIterator接口實(shí)例化public E remove(int index) 刪除指定位置的內(nèi)容public E set(int index, E element)修改指定位置的內(nèi)容public List su
20、bList(int fromIndex, int toIndex)截取自集合Map方法描述V put(K key, V value) 增加內(nèi)容V get(Object key) 取得內(nèi)容 很據(jù)key取內(nèi)容boolean containsKey(Object key) 查找指定的key是否存在boolean containsValue(Object value) 查找指定的value是否存在boolean isEmpty() 判斷集合是否為空 Set keySet() 將全部的key變?yōu)閟et集合Collection values()將全部value變?yōu)閏ollection集合V remove(
21、Object key) 根據(jù)key刪除內(nèi)容void putAll(Map m)增加一組數(shù)據(jù)總結(jié)HashSet:如果集合中對(duì)象所屬的類重新定義了equals()方法,那么這個(gè)類也必須重新定義hashCode()方法,并且保證當(dāng)兩個(gè)對(duì)象用equals()方法比較的結(jié)果為true時(shí),這兩個(gè)對(duì)象的hashCode()方法的返回值相等。HashMap要求其中的key同樣具有上述屬性TreeSet:如果對(duì)集合中的對(duì)象進(jìn)行自然排序,則要求對(duì)象所屬的類實(shí)現(xiàn)Comparable接口,并且保證這個(gè)類的compareTo()和equals()方法采用相同的比較規(guī)則來比較兩個(gè)對(duì)象是否相等。HashMap:如果集合中鍵對(duì)象所屬的類重新定義了equals()方法,那么這個(gè)類
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省恩施市2025-2026學(xué)年上學(xué)期期末九年級(jí)數(shù)學(xué)試卷(無答案)
- 廣東省湛江市雷州市2025-2026學(xué)年上學(xué)期期末九年級(jí)數(shù)學(xué)試卷(無答案)
- 文職人員題庫及答案
- 北京警察學(xué)院《書法》2024 - 2025 學(xué)年第一學(xué)期期末試卷
- 二年級(jí)語文上冊(cè)四單元復(fù)習(xí)卷及答案
- 廣東事業(yè)編招聘2022年考試模擬試題及答案解析36
- 幼兒園大班健康教案23篇
- 分部工程驗(yàn)收技術(shù)要點(diǎn)
- 超聲波探傷檢測技術(shù)操作要領(lǐng)
- 威寧2022年事業(yè)單位招聘考試模擬試題及答案解析14
- 2025寧波市甬北糧食收儲(chǔ)有限公司公開招聘工作人員2人筆試參考題庫及答案解析
- 供應(yīng)鏈年底總結(jié)與計(jì)劃
- 2026年國有企業(yè)金華市軌道交通控股集團(tuán)招聘備考題庫有答案詳解
- 2025年電子工程師年度工作總結(jié)
- 2026年吉林司法警官職業(yè)學(xué)院單招職業(yè)技能筆試備考題庫帶答案解析
- 2025年高職第三學(xué)年(工程造價(jià))工程結(jié)算與審計(jì)測試題及答案
- 2024年曲阜師范大學(xué)馬克思主義基本原理概論期末考試真題匯編
- 醫(yī)院消毒技術(shù)培訓(xùn)課件
- 院區(qū)病房改造提升項(xiàng)目節(jié)能評(píng)估報(bào)告
- 江蘇省電影集團(tuán)招聘筆試題庫2026
- 《機(jī)械創(chuàng)新設(shè)計(jì)》課件-多功能播種機(jī)整體結(jié)構(gòu)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論