<dd id="saiiy"></dd>
  1. <s id="saiiy"></s>

    1. <s id="saiiy"></s>
      1. <span id="saiiy"><blockquote id="saiiy"></blockquote></span>

        java集合總結

        發(fā)布時(shí)間:2025-06-11 07:06:58   來(lái)源:黨團工作    點(diǎn)擊:   
        字號:

        篇一:Java集合類(lèi)總結2

        Java中集合類(lèi)用法總結

        Collection

        ├List

        │├LinkedList

        │├ArrayList │└Vector

        │ └Stack

        └Set

        ├HashSet

        └TreeSet

        Map

        ├Hashtable

        ├HashMap

        ├WeakHashMap

        └TreeMap

        Map接口:

        |

        + -- WeakHashMap: 以弱鍵 實(shí)現的基于哈希表的 Map。在 WeakHashMap 中,當某個(gè)鍵不再正常使用時(shí),將自動(dòng)移除其條目。更精確地說(shuō),對于一個(gè)給定的鍵,其映射的存在并不阻止垃圾回收器對該鍵的丟棄,這就使該鍵成為可終止的,被終止,然后被回收。丟棄某個(gè)鍵時(shí),其條目從映射中有效地移除,因此,該類(lèi)的行為與其他的 Map 實(shí)現有所不同。此實(shí)現不是同步的。

        |

        + -- TreeMap:該映射根據其鍵的自然順序進(jìn)行排序,或者根據創(chuàng )建映射時(shí)提供的 Comparator 進(jìn)行排序,具體取決于使用的構造方法。此實(shí)現不是同步的。 |

        + -- HashMap:基于哈希表的 Map 接口的實(shí)現。此實(shí)現提供所有可選的映射操作,并允許使用 null 值和 null 鍵。此類(lèi)不保證映射的順序,特別是它不保證該順序恒久不變。此實(shí)現不是同步的。

        |

        +-- Sorted Map: 進(jìn)一步提供關(guān)于鍵的總體排序 的 Map。該映射是根據其

        鍵的自然順序進(jìn)行排序的,或者根據通常在創(chuàng )建有序映射時(shí)提供的 Comparator 進(jìn)行排序。對有序映射的 collection 視圖進(jìn)行迭代時(shí),此順序就會(huì )反映出來(lái)。要采用此排序方式,還需要提供一些其他操作。

        Collection接口:

        |

        + -- Set接口:一個(gè)不包含重復元素的 collection。更正式地說(shuō),set 不包含滿(mǎn)足 e1.equals(e2) 的元素對 e1 和 e2,并且最多包含一個(gè) null 元素。正如其名稱(chēng)所暗示的,此接口模仿了數學(xué)上的 set 抽象。

        ||

        |+ -- HashSet:此類(lèi)實(shí)現 Set 接口,由哈希表支持。它不保證 set 的迭代順序;特別是它不保證該順序恒久不變。此類(lèi)允許使用 null 元素。此類(lèi)為基本操作提供了穩定性能,此實(shí)現不是同步的。

        ||

        |+ -- LinkedHashSet:具有可預知迭代順序的 Set 接口的哈希表和鏈接列表實(shí)現。此實(shí)現與 HashSet 的不同之外在于,后者維護著(zhù)一個(gè)運行于所有條目的雙重鏈接列表。此鏈接列表定義了迭代順序,即按照將元素插入到 set中 的順序進(jìn)行迭代。注意,插入順序不 受在 set 中重新插入的 元素的影響。此實(shí)現不是同步的。

        ||

        |+ -- TreeSet:基于 TreeMap 的 NavigableSet 實(shí)現。使用元素的自然順序對元素進(jìn)行排序,或者根據創(chuàng )建 set 時(shí)提供的 Comparator 進(jìn)行排序,具體取決于使用的構造方法。此實(shí)現為基本操作提供受保證的 log(n) 時(shí)間開(kāi)銷(xiāo)。此實(shí)現不是同步的。

        |

        + -- List接口:有序的 collection。此接口的用戶(hù)可以對列表中每個(gè)元素的插入位置進(jìn)行精確地控制。用戶(hù)可以根據元素的整數索引訪(fǎng)問(wèn)元素,并搜索列表中的元素。

        |

        + -- ArrayList:List 接口的大小可變數組的實(shí)現。實(shí)現了所有可選列表操作,并允許包括 null 在內的所有元素。除了實(shí)現 List 接口外,此類(lèi)還提供一些方法來(lái)操作內部用來(lái)存儲列表的數組的大小。每個(gè) ArrayList 實(shí)例都有一個(gè)容量。該容量是指用來(lái)存儲列表元素的數組的大小。它總是至少等于列表的大小。隨著(zhù)向

        ArrayList 中不斷添加元素,其容量也自動(dòng)增長(cháng)。并未指定增長(cháng)策略的細節,因為這不只是添加元素會(huì )帶來(lái)分攤固定時(shí)間開(kāi)銷(xiāo)那樣簡(jiǎn)單。此實(shí)現不是同步的。|

        + -- LinkedList:List 接口的鏈接列表實(shí)現。實(shí)現所有可選的列表操作,并且允許所有元素。除了實(shí)現 List 接口外,LinkedList 類(lèi)還為在列表的開(kāi)頭及結尾 get、remove 和 insert 元素提供了統一的命名方法。這些操作允許將鏈接列表用作堆棧、隊列或雙端隊列。提供先進(jìn)先出隊列操作(FIFO)。此實(shí)現不是同步的。

        |

        + -- Vector:Vector 類(lèi)可以實(shí)現可增長(cháng)的對象數組。與數組一樣,它包含可以使用整數索引進(jìn)行訪(fǎng)問(wèn)的組件。但是 ,Vector 的大小可以根據需要增大或縮小,以適應創(chuàng )建 Vector 后進(jìn)行添加或移除項的操作。此實(shí)現是同步的.

        1. Collection的功能

        下面這張表給出了Collection的所有功能,也就是你能用Set和List做什么事。Map不是繼承Collection的,所以我們會(huì )區別對待。

        boolean add(Object):確保容器能持有你傳給它的那個(gè)參數。如果沒(méi)有把它加進(jìn)去,就返回false。 boolean addAll(Collection):加入參數Collection所含的所有元素。只要加了元素,就返回true。

        void clear():清除容器所保存的所有元素。

        boolean contains(Object):如果容器持有參數Object,就返回true。 boolean containsAll(Collection):如果容器持有參數Collection所含的全部元素,就返回true。

        boolean isEmpty():如果容器里面沒(méi)有保存任何元素,就返回true。

        Iterator iterator():返回一個(gè)可以在容器的各元素之間移動(dòng)的Iterator。 boolean removeAll(Collection):刪除容器里面所有參數Collection所包含的元素。只要刪過(guò)東西,就返回true。

        boolean retainAll(Collection):只保存參數Collection所包括的元素。如果發(fā)生過(guò)變化,則返回true。 int size():返回容器所含元素的數量。

        Object toArray():返回一個(gè)包含容器中所有元素的數組。

        Object toArray(Object a):返回一個(gè)包含容器中所有元素的數組,且

        這個(gè)數組不是普通的Object數組,它的類(lèi)型應該同參數數組a的類(lèi)型相同。

        注意,這里沒(méi)有能進(jìn)行隨機訪(fǎng)問(wèn)的get()方法。這是因為Collection還包括Set。而Set有它自己的內部順序。所以如果你要檢查Collection的元素,你就必須使用迭代器。

        2.List的功能

        List的基本用法事相當將但的。雖然絕大多數時(shí)候,你只是用add()加對象,用get()取對象,用iterator()獲取這個(gè)序列的Iterator,但List還有一些別的很有用的方法。

        實(shí)際上有兩種List:擅長(cháng)對元素進(jìn)行隨機訪(fǎng)問(wèn)的,較常用的ArrayList,和更強大的LinkedList。LinkedList不是為快速的隨機訪(fǎng)問(wèn)而的,但是它卻有一組更加通用的方法。

        Lisk:List的最重要的特征就是有序;它會(huì )確保以一定的順序保存元素。List在Collection的基礎上添加了大量方法,使之能在序列中間插入和刪除元素。List可以制造ListIterator對象,你除了能用它在List的中間插入和刪除元素之外,還能用它沿兩個(gè)方法遍歷List。

        ArrayList*:一個(gè)用數組實(shí)現的List。能進(jìn)行快速的隨機訪(fǎng)問(wèn),但是往列表中間插入和刪除元素的時(shí)候比較慢。ListIterator只能用在反向遍歷ArrayList的場(chǎng)合,不要用它來(lái)插入和刪除元素,因為相比LinkedList,在A(yíng)rrayList里面用ListIterator的系統開(kāi)銷(xiāo)比較高。

        LinkedList:對順序訪(fǎng)問(wèn)進(jìn)行了優(yōu)化。在List中間插入和刪除元素的代價(jià)也不高。隨機訪(fǎng)問(wèn)的速度相對較慢。此外它還有addFirst(),addLast(),getFirst(),getLast(),removeFirst()和removeLast()等方法,你能把它當成棧,隊列或雙向隊列來(lái)用。

        記住,容器只是一個(gè)存儲對象的盒子。如果這個(gè)笑盒子能幫你解決所有的問(wèn)題,那你就用不著(zhù)取管它事怎么實(shí)現的。如果開(kāi)發(fā)環(huán)境里面還有一些別的,會(huì )造成固定的性能開(kāi)銷(xiāo)的因素存在,那么ArrayList和LinkedList之間的性能差別就會(huì )變得不那么重要了。你只需要它們中的一個(gè),你甚至可以想象有這樣一種“完美”的抽象容器;它能根據用途,自動(dòng)地切換其底層的實(shí)現。

        用LinkedList做一個(gè)棧

        “?!庇袝r(shí)也被稱(chēng)為“后進(jìn)先出”的容器。就是說(shuō),最后一個(gè)被“壓”進(jìn)棧中的東西,會(huì )第一個(gè)“彈”出來(lái)。同其他Java容器一樣,壓進(jìn)去和彈出來(lái)的東西都是Object,所以除非你只用Object的功能,否則就必須對彈起來(lái)的東西進(jìn)行類(lèi)型轉換。

        LinkedList的方法能直接實(shí)現棧的功能,所以你完全可以不寫(xiě)Stack而直接使用LinkedList。

        如果你只想要棧的功能,那么繼承就不太合適了,因為繼承出來(lái)的是一個(gè)擁有LinkedList的所有方法的類(lèi)。

        用LinkedList做一個(gè)隊列

        隊列是一個(gè)“先進(jìn)先出”容器。也就是,你把一端把東西放進(jìn)去,從另一端把東西取出來(lái)。所以你放東西的順序也就是取東西的順序。LinkedList有支持隊列的功能的方法,所以它也能被當作Queue來(lái)用。

        還能很輕易地用LinkedList做一個(gè)deque。它很像隊列,只是你可以從任意一端添加和刪除元素。

        Vector類(lèi)

        Vector非常類(lèi)似ArrayList,但是Vector是同步的。由Vector創(chuàng )建的

        Iterator,雖然和ArrayList創(chuàng )建的Iterator是同一接口,但是,因為Vector是同步的,當一個(gè)Iterator被創(chuàng )建而且正在被使用,另一個(gè)線(xiàn)程改變了Vector的狀態(tài),這時(shí)調用Iterator的方法時(shí)將拋出ConcurrentModificationException,因此必須捕獲該異常。

        Stack 類(lèi)

        Stack繼承自Vector,實(shí)現一個(gè)后進(jìn)先出的堆棧。Stack提供5個(gè)額外的方法使得Vector得以被當作堆棧使用?;镜膒ush和pop方法,還有peek方法得到棧頂的元素,empty方法測試堆棧是否為空,search方法檢測一個(gè)元素在堆棧中的位置。Stack剛創(chuàng )建后是空棧。

        3.Set的功能

        Set的接口就是Collection的,所以不像那兩個(gè)List,它沒(méi)有額外的功能。實(shí)際上Set確確實(shí)實(shí)就是一個(gè)Collection--只不過(guò)行為方式不同罷了。Set會(huì )拒絕持有多個(gè)具有相同值的對象的實(shí)例。

        Set:加入Set的每個(gè)元素必須是唯一的;否則,Set是不會(huì )把它加進(jìn)

        篇二:【java】集合框架

        【java總結】集合框架

        Collection是集合框架層次結構中的根接口。Collection 表示一組對象,這些對象也稱(chēng)為 collection 的元素。一些 collection 允許有重復的元素,而另一些則不允許。一些 collection 是有序的,而另一些則是無(wú)序的。Collection接口下有最常用的接口為L(cháng)ist跟Set。需要注意的是,Map并沒(méi)有實(shí)現Collection接口。

        List接口實(shí)現類(lèi)ArrayList

        優(yōu)點(diǎn):類(lèi)似數組的形式進(jìn)行存儲,因此它的隨機訪(fǎng)問(wèn)速度極快。

        缺點(diǎn):不適合于在線(xiàn)性表中間需要頻繁進(jìn)行插入和刪除操作。因為每次插入和刪除都需要移動(dòng)數組中的元素,它是用數組存儲元素的,這個(gè)數組可以動(dòng)態(tài)創(chuàng )建,如果元素個(gè)數超過(guò)了數組的容量,那么就創(chuàng )建一個(gè)更大的新數組,并將當前數組中的所有元素都復制到新數組中。

        view plain copy

        span style=font-size:14px;public class ArrayListTest {

        public static void main(String args){

        ListString arrayList=new ArrayListString();

        arrayList.add(Welcome);

        arrayList.add(to);

        arrayList.add(java);

        //把ArrayList變?yōu)閿到M相關(guān)的內容進(jìn)行遍歷

        String strArray=new String;

        arrayList.toArray(strArray);

        for(int i=0;istrArray.length;i++)System.out.println(strArray);

        //使用迭代器進(jìn)行ArrayList遍歷

        IteratorString iter=arrayList.iterator();

        while(iter.hasNext()){

        System.out.println(iter.next());

        }

        }

        }/span

        List接口實(shí)現類(lèi)LinkedList

        優(yōu)點(diǎn):適合于在鏈表中間需要頻繁進(jìn)行插入和刪除操作。

        缺點(diǎn): 隨機訪(fǎng)問(wèn)速度較慢。查找一個(gè)元素需要從頭開(kāi)始一個(gè)一個(gè)的找。此類(lèi)實(shí)現 Deque 接口,為 add、poll 提供先進(jìn)先出隊列操作,以及其他堆棧和雙端隊列操作LinkedList是在一個(gè)鏈表中存儲元素。

        view plain copy

        span style=font-size:14px;public class LinkedListTest {

        public static void main(String args){

        ListString linkedList=new LinkedListString();

        //使用ForEach遍歷linkedList

        String strArray2=new String;

        linkedList.toArray(strArray2);

        for(int i=0;istrArray2.length;i++)System.out.println(strArray2);

        //foreach遍歷LinkedList

        for(String str:linkedList){

        System.out.println(str);

        }

        //使用迭代器進(jìn)行ArrayList遍歷

        IteratorString iter=linkedList.iterator();

        while(iter.hasNext()){

        System.out.println(iter.next());

        }

        }

        }/span

        List接口實(shí)現類(lèi)Vector:

        Vector使用了關(guān)鍵字synchronized將訪(fǎng)問(wèn)和修改向量的方法都變成同步的了,所以對于不需要同步的應用程序來(lái)說(shuō),類(lèi)ArrayList比類(lèi)Vector更高效。

        相同點(diǎn):

        ①都繼承于A(yíng)bstractList,并且實(shí)現List接口

        ②都實(shí)現了RandomAccess和Cloneable接口

        ③都是通過(guò)數組實(shí)現的,本質(zhì)上都是動(dòng)態(tài)數組,默認數組容量是10

        ④都支持Iterator和listIterator遍歷

        不同點(diǎn):

        ①ArrayList是非線(xiàn)程安全,而Vector是線(xiàn)程安全的

        ②容量增加方式不同,Vector默認增長(cháng)為原來(lái)一倍,而ArrayList卻是原來(lái)的一半+1 ③Vector支持通過(guò)Enumeration去遍歷,而List不支持

        view plain copy

        span style=font-size:14px;public class VectorTest {

        public static void main(String args){

        VectorInteger vector = new VectorInteger();

        for(int i = 0; i 10; i++){

        vector.add(i);

        }

        //直接打印

        System.out.println(vector.toString());

        //size()

        System.out.println(vector.size());

        //contains

        System.out.println(vector.contains(2));

        //總結:對比Vector的遍歷方式,使用索引的隨機訪(fǎng)問(wèn)方式最快,使用迭代器最慢 //iterator遍歷

        IteratorInteger iterator = vector.iterator();

        while(iterator.hasNext()){

        System.out.print(iterator.next() + );

        }

        //Enumeration遍歷

        Enumeration enu = vector.elements();

        while (enu.hasMoreElements()) {

        System.out.println((Integer)enu.nextElement());

        }

        //toArray

        Object objArr = vector.toArray();

        System.out.println(\nobjArr: + Arrays.asList(objArr));

        Integer intArr = vector.toArray(new Integer);

        System.out.println(intArr: + Arrays.asList(intArr));

        //add

        vector.add(5);

        //remove

        vector.remove(5);

        System.out.println(vector);

        //containsAll

        System.out.println(vector.containsAll(Arrays.asList(5,6)));

        //addAll

        vector.addAll(Arrays.asList(555,666));

        System.out.println(vector);

        //removeAll

        vector.removeAll(Arrays.asList(555,666));

        System.out.println(vector);

        //addAll方法

        vector.addAll(5, Arrays.asList(666,666, 6));

        System.out.println(vector);

        //get方法

        System.out.println(vector.get(5));

        //set方法

        vector.set(5, 55);

        System.out.println(vector.get(5));

        //add方法

        vector.add(0, 555);

        System.out.println(vector);

        //remove方法

        vector.remove(0);

        System.out.println(vector);

        //indexof方法

        System.out.println(vector.indexOf(6));

        //lastIndexOf方法

        System.out.println(vector.lastIndexOf(6));

        //listIterator方法

        ListIteratorInteger listIterator = vector.listIterator();

        System.out.println(listIterator.hasPrevious());

        //listIterator(index)方法

        ListIteratorInteger iListIterator = vector.listIterator(5);

        System.out.println(iListIterator.previous());

        //subList方法

        System.out.println(vector.subList(5, 7));

        //clear

        vector.clear();

        System.out.println(vector);

        }

        }/span

        List接口實(shí)現類(lèi)Stack

        棧類(lèi),是Java2之前引入的,繼承自類(lèi)Vector。同樣是線(xiàn)程同步的

        view plain copy

        span style=font-size:14px;public class StackTest {

        public static void main(String args){

        StackInteger stack = new StackInteger();

        for(int i = 0; i 10; i++){

        stack.add(i);

        }

        System.out.println(stack);

        System.out.println(stack.peek());

        stack.push(555);

        System.out.println(stack);

        System.out.println(stack.pop());

        System.out.println(stack);

        System.out.println(stack.empty());

        System.out.println(stack.search(6));

        System.out.println(stack遍歷:);

        while(!stack.empty()){

        System.out.print(stack.pop() + );

        }

        }

        }/span

        List接口總結:實(shí)際使用中我們需要根據特定的需求選用合適的類(lèi),如果 除了在末尾外不能在其他位置插入或者刪除元素,那么ArrayList效率更高,如果需要經(jīng)常插入或者刪除元素,就選擇LinkedList。

        Set接口實(shí)現類(lèi)HashSet:

        HashSet是Set接口最常見(jiàn)的實(shí)現類(lèi),其底層是基于hash算法進(jìn)行存儲相關(guān)元素的。HashSet中存儲元素的位置是固定的,并且是無(wú)序的。Set集合中的去重和hashCode與equals方法相關(guān)。

        view plain copy

        span style=font-size:14px;public class Num implements Comparable{

        private int num;

        public Num(int num){

        this.num=num;

        }

        @Override

        public int compareTo(Object o) {

        // TODO Auto-generated method stub

        Num x=(Num)o;

        if(numx.num)return 1;

        else if(num==x.num) return 0;

        else return -1;

        }

        public String toString(){

        return num=+num;

        }

        }/span

        篇三:JAVA集合之Map映射深刻總結案例附上解釋跟總結

        一.HashMap實(shí)例

        案例1:HashMapDemo1

        package Map映射;

        import java.util.HashMap;

        import java.util.Iterator;

        import java.util.Map;

        import java.util.Set;

        /** Java集合系列之Map映射學(xué)習總結

        * 順序結構

        * 基于哈希表的 Map 接口的實(shí)現 。

        * 鍵和值都允許是null,值可以重復。

        * 無(wú)序的

        * 線(xiàn)程不安全的。

        * 遍歷無(wú)序輸出.

        * 和Set集一樣,沒(méi)有for循環(huán)遍歷的方法。

        * 遍歷Map方法有兩種:

        * ①調用keySet方法:

        *Set keys = map.keySet();

        * Iterator it = keys.iterator();

        * ②調用entrySet方法:

        *Set keys = map.entrySet();

        *Iterator it = keys.iterator();

        * 本例子遍歷的是基本類(lèi)型

        *

        */

        public class HashMapDemo1 {

        public static void main(String args) {

        HashMap map = new HashMap();

        map.put(1, 111);

        map.put(1, 上海);

        map.put(5, 廣州);

        map.put(3, 西安);

        map.put(null,武漢); //鍵允許是null

        map.put(2, null);//值允許是null

        map.put(null,null);//鍵和值都允許是null,會(huì )替換前面的null:武漢.

        System.out.println(**********迭代器遍歷調用keySet方法*********);Set keys = map.keySet();//獲取所有的鍵,放入一個(gè)集合中

        Iterator it = keys.iterator();//取得迭代器才可以遍歷

        //遍歷出來(lái)的結果是無(wú)序的。

        }

        } while(it.hasNext()) { Object obj = it.next();//切記這個(gè)至少遍歷鍵,不是值。 System.out.println(obj+------+map.get(obj));//取得鍵對應的值 } System.out.println(**********迭代器遍歷調用entrySet方法*********); Set set1=map.entrySet(); Iterator iterator1=set1.iterator(); while (iterator1.hasNext()) { Map.Entry object = (Map.Entry) iterator1.next(); System.out.println(object.getKey()+------+object.getValue()); }

        案例2:HashMapDemo2

        package Map映射;

        import java.util.*;

        public class HashMapDemo2 {

        @SuppressWarnings(rawtypes) public static void main(String args){ HashMapComparable, Comparable map=new HashMapComparable, HashMapInteger,Person2 map1=new HashMapInteger,Person2(); Person2 p1=new Person2(李川,111,80); Person2 p2=new Person2(李您,111,80); Comparable();//一個(gè)鍵對應一個(gè)值,而且鍵不能重復,會(huì )被覆蓋 Person2 p3=new Person2(林是,111,80); map1.put(1, p1); map1.put(2, p2); map1.put(3, p3);map.put(1, 110); map.put(2, 220); map.put(城市,福建); map.put(null, null); System.out.println(***********用keySet方法遍歷*********); Set keys=map.keySet();//取得鍵值,取得map所有的鍵值,存入set集合中 Iterator iterator=keys.iterator();//利用鍵值取得value值while(iterator.hasNext()){ Object object=iterator.next(); System.out.println(object+-------+map.get(object));//輸出是無(wú)序的 }

        System.out.println(***********用entrySet方法遍歷*********); SetMap.EntryInteger,Person2 keys1=map1.entrySet();//查找文檔,發(fā)現map1調用entrySet方法返回的的是SetMap.EntryK,V,所以要用相應的接收。Map.EntryInteger,Person2可寫(xiě)或不寫(xiě)

        IteratorMap.EntryInteger,Person2 iterator1=keys1.iterator(); //while(iterator1.hasNext()){ Map.EntryInteger,Person2 entry = (Map.EntryInteger,Person2) // entry.getValue();表示取得該鍵對應的值,這個(gè)值要是基本類(lèi)型的話(huà),那就 System.out.println((entry.getKey()+-------+姓名:得到一個(gè)Set的迭代器,在后面的遍歷中使用。SetMap.EntryK,V可寫(xiě)可不寫(xiě)。 iterator1.next(); 直接輸出,要是引用類(lèi)型的話(huà),還需要調用方法取得相應的值

        +(entry.getValue()).getname()+學(xué)號:+(entry.getValue()).getno()+分數:+(entry.getValue()).getscore()));//輸出是無(wú)序的

        }

        class Person2{

        String name; int no; int score; public Person2(String name,int no,int score){ this.name=name; this.no=no; this.score=score;} } } public void setname(String name){ this.name=name; } public void setno(int no){ this.no=no; } public void setscore(int score){ this.score=score; } public String getname(){ return name; } public int getno(){ return no; } public int getscore(){

        } }

        案例3:HashMapDemo3

        package Map映射;

        /**

        *總結:HashMap用entrySet()方法遍歷用法:

        *①SetMap.EntryInteger, Object keys = map3.entrySet();也是先取得集合中的(鍵-值)映射關(guān)系,放入keys集合中

        *②IteratorMap.EntryInteger, Object iterator = keys.iterator();取得迭代器,用來(lái)遍歷(鍵-值)映射關(guān)系的集合.

        *③iterator.hasNext();判斷是否有鍵

        *④Map.EntryInteger,Object entry = iterator.next();遍歷第一個(gè)(鍵-值)映射關(guān)系,請注意,Map.entrySet 方法返回映射的 collection 視圖,用Map.Entry接收。

        *這樣就可以通過(guò)調用entry.getKey()和entry.getValue()這兩個(gè)方法取得(鍵-值)映射關(guān)系中對應的值了。

        *注意了,對于entry.getValue(),若是基本數據怎么不需要改變,若是引用類(lèi)型: *Person3 p=(Person3) entry.getValue();

        *System.out.println(entry.getKey()+----+pp.getname());

        */

        import java.util.HashMap;

        import java.util.Iterator;

        import java.util.Map;

        import java.util.Set;

        public class HashMapDemo3 {

        public static void main(String args){

        HashMapInteger, Object map3=new HashMapInteger,Object();

        Person3 p1=new Person3(李川,111,80); Person3 p2=new Person3(李川,111,80); Person3 p3=new Person3(李川,111,80); map3.put(1,11); map3.put(2, 110); map3.put(3, 220); map3.put(6, p1); map3.put(4,福建); map3.put(5, a); map3.put(null, null); map3.put(7, p2); map3.put(8, p3); map3.remove(6); SetMap.EntryInteger, Object keys = map3.entrySet();

        IteratorMap.EntryInteger, Object iterator = keys.iterator();

        while (iterator.hasNext()) {

        Map.EntryInteger,Object entry = iterator.next();

        if(entry.getValue() instanceof Person3){//entry.getValue()這是表示值,但是對應的是引用類(lèi)型對象

        Person3 pp=(Person3) entry.getValue();

        System.out.println(entry.getKey()+----+pp.getname());

        }

        else {

        System.out.println(entry.getKey()+----+entry.getValue());

        }

        }

        }

        }

        class Person3{

        String name;

        int no;

        int score;

        public Person3(String name,int no,int score){

        this.name=name;

        this.no=no;

        this.score=score;

        }

        public void setname(String name){

        this.name=name;

        }

        public void setno(int no){

        this.no=no;

        }

        public void setscore(int score){

        this.score=score;

        }

        public String getname(){

        return name;

        }

        public int getno(){

        return no;

        }

        public int getscore(){

        return score;

        }


        国产另类无码专区|日本教师强伦姧在线观|看纯日姘一级毛片|91久久夜色精品国产按摩|337p日本欧洲亚洲大胆精

        <dd id="saiiy"></dd>
        1. <s id="saiiy"></s>

          1. <s id="saiiy"></s>
            1. <span id="saiiy"><blockquote id="saiiy"></blockquote></span>