成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

java集合-Map

Little_XM / 1672人閱讀

摘要:增強(qiáng)的集合都可以是任何引用類(lèi)型的數(shù)據(jù),的不允許重復(fù)即同一個(gè)對(duì)象的任何兩個(gè)通過(guò)方法比較總是返回。的這些實(shí)現(xiàn)類(lèi)和子接口中集的存儲(chǔ)形式和對(duì)應(yīng)集合中元素的存儲(chǔ)形式完全相同。根據(jù)的自然順序,即枚舉值的定義順序,來(lái)維護(hù)對(duì)的順序。

Java8增強(qiáng)的Map集合

Key-value都可以是任何引用類(lèi)型的數(shù)據(jù),Map的Key不允許重復(fù)即同一個(gè)Map對(duì)象的任何兩個(gè)key通過(guò)equals方法比較總是返回false。

如果把Map里的所有key放在一起來(lái)看,他們就組成了一個(gè)Set集合:所有key沒(méi)有順序,key與key之間不能重復(fù),實(shí)際上Map確實(shí)包含了一個(gè)keySet方法,用來(lái)返回Map里所有key組成的Set集合。

Map的這些實(shí)現(xiàn)類(lèi)和子接口中key集的存儲(chǔ)形式和對(duì)應(yīng)Set集合中元素的存儲(chǔ)形式完全相同。

Set與Map之間的關(guān)系非常密切。雖然Map中放的元素時(shí)key-value對(duì),Set集合中放的元素時(shí)單個(gè)對(duì)象,但如果把key-value對(duì)中的value當(dāng)成key的附庸:key在那里,value就跟在那里,這樣就可以像對(duì)待Set一樣來(lái)對(duì)待Map了。事實(shí)上,Map提供了一個(gè)Entry內(nèi)部類(lèi)來(lái)封裝key-value對(duì),而計(jì)算Entry存儲(chǔ)時(shí)則只考慮Entry封裝的key。從java源碼來(lái)看,java是先實(shí)現(xiàn)了Map,然后通過(guò)包裝一個(gè)所有value都為null的Map就實(shí)現(xiàn)了Set集合。

如果把Map里的所有value放在一起來(lái)看,他們又非常類(lèi)似于一個(gè)List:元素與元素之間可以重復(fù),但每個(gè)元素可以根據(jù)索引來(lái)查找,只是Map中的索引不再使用整數(shù)值,而是以另一個(gè)對(duì)象作為索引。

public class MapTest {
    public static void main(String[] args) {
        Map map = new HashMap<>();
        map.put("java", 1);
        map.put("python", 2);
        map.put("hadoop", 3);
        //{python=2, java=1, hadoop=3}
        System.out.println(map);
        //如果當(dāng)前Map中已經(jīng)有一個(gè)與該Key相等的key-value對(duì),則新的key-value會(huì)覆蓋原來(lái)的key-value對(duì)。并返回之前被覆蓋的value
        Integer put = map.put("java", 4);
        System.out.println(put);//1
        for(Entry map2:map.entrySet()) {
            System.out.println(map2);
            //python=2
            //java=4
            //hadoop=3
        }
        
        for(Object obj : map.keySet()) {
            System.out.println(obj);//python java hadoop
        }
    }
}
Java8為Map新增加的方法
public class NewMapTest {
    public static void main(String[] args) {
        Map map = new HashMap<>();
        map.put("123", 456);
        //{123=456}
        System.out.println(map);
        
        /**
         * compute 和 computeIfAbsent 和 computeIfPresent總結(jié)
         * 
         * compute 如果函數(shù)式接口中的返回值不為null,那就是用接口中返回值來(lái)覆蓋原value
         *                 如果接口中返回值為null,那么就刪除此map對(duì)
         *                 如果原value為null,那就用接口中返回值覆蓋原value
         * computeIfAbsent
         *                 如果函數(shù)式接口中的返回值不為null,而且原value不為null,那么不做改變
         *              如果接口中返回值為null,不做改變
         *              如果原value為null,那么就使用接口中的返回值覆蓋原value
         */
        /**
         * map.compute(key, remappingFunction)
         * 該方法使用remappingFunction根據(jù)原來(lái)key-value對(duì)計(jì)算一個(gè)新value
         * 只要新value不為null,就使用新value覆蓋原來(lái)value;
         * 如果原來(lái)value不為null,但新value為null,則刪除原key-value對(duì);
         * 如果原value,新value同時(shí)為null,那么方法不改變?nèi)魏蝛ey-value對(duì),直接返回null;
         */
        /*
        Integer compute = map.compute("123", (key,value) -> Integer.parseInt(key));
        System.out.println(compute);//123
        System.out.println(map);//{123=123}
        
        Integer compute = map.compute("123", (key,value) -> null);
        System.out.println(map);//{}
         */
        /*
        map.put("1234", null);
        Integer compute = map.compute("1234", (key,value) -> 0);
        System.out.println(compute);//0
        System.out.println(map);//{123=456, 1234=0}
        */
        
        /**
         * Absent 缺席
         *         map.computeIfAbsent(key, mappingFunction)
         * 如果傳給該方法的key參數(shù)在Map中對(duì)應(yīng)的value為null,則使用mappingFunction根據(jù)原來(lái)key,value計(jì)算一個(gè)新的結(jié)果
         * 如果計(jì)算結(jié)果不為null,則用計(jì)算結(jié)果覆蓋原有的value。如果原Map原來(lái)不包括該Key,那么該方法可能會(huì)添加一組key-value對(duì)。
         */
        /*
        map.put("1234", null);
        map.computeIfAbsent("1234", (key) -> Integer.parseInt(key));
        System.out.println(map);//{123=456, 1234=1234}
        */
        /*
        Integer computeIfAbsent = map.computeIfAbsent("1231", (e) -> Integer.parseInt(e));
        System.out.println(computeIfAbsent);//1231
        System.out.println(map);//{123=456, 1231=1231}
        */
        
        /*
        Integer computeIfAbsent = map.computeIfAbsent("123", (e) -> Integer.parseInt("123123123"));
        System.out.println(computeIfAbsent);//456
        System.out.println(map);//{123=456}
        */
        
        
        /**
         * Present 提出;介紹;呈現(xiàn);贈(zèng)送
         * map.computeIfPresent(key, remappingFunction)
         * 如果傳給該方法的key參數(shù)在Map中對(duì)應(yīng)的value不為null,該方法使用remappingFunction根據(jù)原key-value計(jì)算一個(gè)新結(jié)果,
         * 如果計(jì)算結(jié)果不為null,則使用該結(jié)果覆蓋原來(lái)的value,
         * 如果計(jì)算結(jié)果為null,則刪除原key-value對(duì)
         */
        /*
        Integer computeIfPresent = map.computeIfPresent("123", (key,value) -> 0);
        System.out.println(computeIfPresent);//0
        System.out.println(map);//{123=0}
        */
        /*
        Integer computeIfPresent = map.computeIfPresent("1234", (Key,value) -> 0);
        System.out.println(computeIfPresent);//null
        System.out.println(map);//{123=456}
        */
        /*
        map.put("1234", null);
        Integer computeIfPresent = map.computeIfPresent("1234", (key,value) -> 12);
        System.out.println(computeIfPresent);//null
        System.out.println(map);//{123=456, 1234=null}
        */
        /*
        Integer computeIfPresent = map.computeIfPresent("123", (key,value) -> null);
        System.out.println(computeIfPresent);//null
        System.out.println(map);//{}
        */
        //獲取指定key對(duì)應(yīng)的value,如果key不存在那么就返回指定value
        Integer orDefault = map.getOrDefault("1234", 452);
        System.out.println(orDefault);//452
        
        /**
         * 該方法會(huì)先根據(jù)key參數(shù)獲取該Map中對(duì)應(yīng)的value,如果獲取的value為null
         * 則直接用傳入的value覆蓋原有的value,在這種情況下,可能要添加一組map對(duì),
         * 如果value不為null,則使用函數(shù)接口根據(jù)value,新value計(jì)算出一個(gè)新的結(jié)果,并用得到的結(jié)果去覆蓋原有的value
         */
        Integer merge = map.merge("123", 123123, (key,value) -> value+1000);
        System.out.println(merge);//124123
        System.out.println(map);//{123=124123}
    }
}
Java8改進(jìn)的HashMap和Hashtable實(shí)現(xiàn)類(lèi)

Hashtable和HashMap區(qū)別

Hashtable是一個(gè)線程安全的Map實(shí)現(xiàn),但HashMap是線程不安全的實(shí)現(xiàn),所以HashMap比Hashtable的性能高一點(diǎn),但如果有多個(gè)線程訪問(wèn)同一個(gè)Map對(duì)象時(shí),使用Hashtable實(shí)現(xiàn)類(lèi)會(huì)更好、

Hashtable不允許使用null作為key和value,如果試圖把null值放入Hashtable里,將引發(fā)空指針異常,但HashMap可是使用null作為key和value、

為了成功的在HashMap,Hashtable中存儲(chǔ),獲取對(duì)象,用作key的對(duì)象必須實(shí)現(xiàn)hashCode方法和equals方法。

類(lèi)似于HashSet,HashMap,Hashtable判斷兩個(gè)key相等的標(biāo)準(zhǔn)也是:兩個(gè)key通過(guò)equals方法返回true,兩個(gè)key的hashCode值也相等。

HashMap和Hashtable判斷兩個(gè)value相等的標(biāo)準(zhǔn)是:只要兩個(gè)對(duì)象通過(guò)equals方法比較返回true即可。

public class ABHashtable {
    public static void main(String[] args) {
        Hashtable hashtable = new Hashtable<>();
        hashtable.put(new A(123), "123");
        hashtable.put(new A(1234), "1234");
        hashtable.put(new A(1236), new B());
        System.out.println(hashtable);
        
        System.out.println(hashtable.containsValue("32342342"));//true
        System.out.println(hashtable.containsKey(new A(123)));//true
        System.out.println(hashtable.containsKey(new A(123123)));//false
    }
}    

上述代碼解釋?zhuān)荷鲜鯤ashtable中包含了B對(duì)象,而且重寫(xiě)了B對(duì)象的equals方法,它與任何對(duì)象通過(guò)equals都會(huì)返回true,所以在第一個(gè)輸出是true。根據(jù)Hashtable判斷兩個(gè)key相等的標(biāo)準(zhǔn),在第二個(gè)輸出的時(shí)候,因?yàn)橥ㄟ^(guò)equals和hashCode都返回true,所以Hashtable判斷這兩個(gè)key相等,所以為true。

與HashSet類(lèi)似的是,如果使用可變對(duì)象作為HashMap,Hashtable的key,如果程序修改了可變對(duì)象,那么程序再也無(wú)法準(zhǔn)確訪問(wèn)到Map中被修改過(guò)的key。

public class ABHashtable2 {
    public static void main(String[] args) {
        HashMap hashtable = new HashMap();
        hashtable.put(new A(123), "123");
        hashtable.put(new A(1234), "1234");
        //{mapTest.A@4d2=1234, mapTest.A@7b=123}
        System.out.println(hashtable);
        A next = (A) hashtable.keySet().iterator().next();
        System.out.println(next.count);//1234
        next.count = 123;
        //{mapTest.A@7b=1234, mapTest.A@7b=123}
        System.out.println(hashtable);
        
        hashtable.remove(new A(123));
        //只能刪除沒(méi)有被修改的key所對(duì)應(yīng)的key-value對(duì)
        System.out.println(hashtable);//{mapTest.A@7b=1234}
        System.out.println(hashtable.get(new A(123)));//null
    }
}

盡量不要使用可變對(duì)象作為key,如果確實(shí)需要,則盡量不要在程序中修改作為key的對(duì)象。

LinkedHashMap實(shí)現(xiàn)類(lèi)

LinkedHashMap也使用雙向鏈表來(lái)維護(hù)key-value對(duì)的次序,其實(shí)只需要考慮key的次序,該鏈表負(fù)責(zé)維護(hù)Map的迭代順序,迭代順序與key-value對(duì)的插入順序保持一致。

因?yàn)樗褂面湵韥?lái)維護(hù)內(nèi)部順序,所以在迭代訪問(wèn)Map里的全部元素時(shí)將有較好的性能,迭代輸出LinkedHashMap的元素時(shí),將會(huì)安添加key-value的順序輸出。

public class LinkedHashMapS {
    public static void main(String[] args) {
        LinkedHashMap map = new LinkedHashMap<>();
        map.put("1", "1");
        map.put("2", "2");
        map.put("3", "3");
        System.out.println(map);//{1=1, 2=2, 3=3}
    }
}
使用Properties讀寫(xiě)屬性文件

Properties是Hashtable類(lèi)的子類(lèi)

Properties相當(dāng)于一個(gè)key,value都是String的Map

public class PropertiesTest {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        Properties properties = new Properties();
        properties.setProperty("w","zq");
        properties.setProperty("w1","zq1");
        properties.setProperty("w2","zq2");
        //輸出文件目錄,文件說(shuō)明
        properties.store(new FileOutputStream(new File("myProperties.properties")), "comment");
        properties.storeToXML(new FileOutputStream(new File("myProperties1.xml")), "comment");
    }
}
myProperties
#comment
#Fri Mar 09 10:11:42 CST 2018
w=zq
w1=zq1
w2=zq2

myProperties1



comment
zq
zq1
zq2

SortedMap接口和TreeMap實(shí)現(xiàn)類(lèi)

TreeMap就是一個(gè)紅黑樹(shù)數(shù)據(jù)結(jié)構(gòu),每個(gè)key-value對(duì)即作為紅黑樹(shù)的一個(gè)節(jié)點(diǎn)。TreeMap存儲(chǔ)key-value對(duì)時(shí),需要根據(jù)key對(duì)節(jié)點(diǎn)進(jìn)行排序。TreeMap可以保證所有的key-value對(duì)處于有序狀態(tài)。TreeMap也可以自然排序和定制排序。

TreeMap中判斷兩個(gè)key相等的標(biāo)準(zhǔn)是:兩個(gè)key通過(guò)compareTo方法返回0,TreeMap即認(rèn)為這兩個(gè)key是相等的。

如果使用自定義類(lèi)作為T(mén)reeMap的key,且想讓TreeMap良好的工作,則重寫(xiě)該類(lèi)的equals方法和compareTo方法時(shí)保持一致的返回結(jié)果。

Set和Map的關(guān)系十分密切,java源代碼就是先實(shí)現(xiàn)了HashMap,TreeMMap等集合,然后通過(guò)包裝一個(gè)所有的value都為null的Map集合實(shí)現(xiàn)了Set集合類(lèi)。

public class TreeMapTest {
    public static void main(String[] args) {
        TreeMap treeMap = new TreeMap<>();
        treeMap.put(12, 34);
        treeMap.put(-12, 34);
        treeMap.put(122, 34);
        treeMap.put(0, 34);
        //{-12=34, 0=34, 12=34, 122=34}
        System.out.println(treeMap);
    }
}
WeakHashMap實(shí)現(xiàn)類(lèi)

WeakHashMap與HashMap的區(qū)別是:HashMap的key保留對(duì)實(shí)際對(duì)象的強(qiáng)引用,這意味著只要該HashMap對(duì)象不被銷(xiāo)毀,該HashMap的所有key所引用的對(duì)象就不會(huì)被垃圾回收,HashMap也不會(huì)自動(dòng)刪除這些key所對(duì)應(yīng)的key-value對(duì);但WeakHashMap的key只保留了實(shí)際對(duì)象的弱引用,這意味著如果WeakHashMap對(duì)象的key所引用的對(duì)象沒(méi)有被其他強(qiáng)引用變量所引用,則這些key所引用的對(duì)象可能被垃圾回收,WeakHashMap也可能自動(dòng)刪除這些key所對(duì)應(yīng)的key-value對(duì)。

public class WeakHashMapTets {
    public static void main(String[] args) {
        WeakHashMap weakHashMap = new WeakHashMap<>();
        weakHashMap.put(new String("1"), new String("1"));
        weakHashMap.put(new String("2"), new String("2"));
        weakHashMap.put(new String("3"), new String("3"));
        weakHashMap.put("4", new String("4"));
        //{4=4, 1=1, 2=2, 3=3}
        System.out.println(weakHashMap);
        System.gc();
        System.runFinalization();
        //{4=4}
        System.out.println(weakHashMap);
        //第四組key-value對(duì)的key是一個(gè)字符串直接量,系統(tǒng)會(huì)自動(dòng)保留對(duì)該字符串對(duì)象的強(qiáng)引用,所以垃圾回收時(shí)不會(huì)回收他
    }
}    

如果需要使用WeakHashMap的key來(lái)保留對(duì)象的弱引用,則不要讓該key所引用的對(duì)象具有任何強(qiáng)引用了否則將失去WeakHashMap的意義。

IdentityHashMap實(shí)現(xiàn)類(lèi)

在IdentityHashMap中,當(dāng)且僅當(dāng)兩個(gè)key嚴(yán)格相等key1 == key2時(shí),IdentityHashMap才認(rèn)為兩個(gè)key相等,對(duì)于普通的HashMap而言,只要key1和key2通過(guò)equals方法比較返回true,且他們的hashCode值相等即可。

public class IdentityHashMapTest {
    public static void main(String[] args) {
        IdentityHashMap identityHashMap = new IdentityHashMap<>();
        identityHashMap.put(new String("r"),"r");
        identityHashMap.put(new String("r"),"r");
        identityHashMap.put("java", 0);
        identityHashMap.put("java", 1);
        //{java=1, r=r, r=r}
        System.out.println(identityHashMap);
        /**
         * 由于上面new String()的地址值不一樣,IdentityHashCode返回值會(huì)不一樣
         * 所以第一個(gè)String與第二個(gè)String并不一樣
         * 但是java字符串直接量是一樣的,所以第二次put就會(huì)覆蓋原來(lái)的value
         */
    }
}
EnumMap實(shí)現(xiàn)類(lèi)

EnumMap中的所有key都必須是單個(gè)枚舉類(lèi)的枚舉值,創(chuàng)建EnumMap時(shí)必須顯示或隱式指定它對(duì)應(yīng)的枚舉類(lèi)。

EnumMap具有如下特征

EnumMap在內(nèi)部以數(shù)組形式保存,所以這種實(shí)現(xiàn)形式非常緊湊,高效。

EnumMap根據(jù)key的自然順序,即枚舉值的定義順序,來(lái)維護(hù)key-value對(duì)的順序。

EnumMap不允許使用null作為key,但允許使用null作為value,如果試圖使用null作為key時(shí)將拋出空指針異常。如果只是查詢(xún)是否包含值為null的key,或只是刪除值為null的key,都不會(huì)拋出異常。

創(chuàng)建EnumMap時(shí)必須指定一個(gè)枚舉類(lèi),從而將該EnumMap和指定的枚舉類(lèi)關(guān)聯(lián)起來(lái)。

public class EnumMapTest {
    public static void main(String[] args) {
        EnumMap enumMap = new EnumMap(EnumMaps.class);
        System.out.println(enumMap);//{}
        enumMap.put(WINTER, "4");
        enumMap.put(SPRING, "4");
        enumMap.put(SUMMER, "4");
        //{SPRING=4, SUMMER=4, WINTER=4}
        System.out.println(enumMap);
    }
}
各Map實(shí)現(xiàn)類(lèi)的性能分析

HashMap和Hashtable的實(shí)現(xiàn)機(jī)制幾乎一樣,但由于Hashtable是一個(gè)古老的,線程安全的集合,因此HashMap通常比Hashtable要快。

TreeMap通常比HashMap,Hashtable要慢,尤其在插入刪除key-value對(duì)時(shí)更慢,因?yàn)門(mén)reeMap底層采用紅黑樹(shù)來(lái)管理key-value對(duì),紅黑樹(shù)的每個(gè)節(jié)點(diǎn)就是一個(gè)key-value對(duì)。

使用TreeMap有一個(gè)好處:TreeMap中的key-value對(duì)總是處于有序狀態(tài),無(wú)需專(zhuān)門(mén)進(jìn)行排序操作。當(dāng)TreeMap被填充之后,就可以調(diào)用keySet(),去的由key組成的Set,然后使用toArry()方法生成key的數(shù)組,接下來(lái)使用Arrays的binarySearch()方法在已排序的數(shù)組中快速地查詢(xún)對(duì)象。

對(duì)于一般的應(yīng)用場(chǎng)景,程序應(yīng)該多考慮使用HashMap,因?yàn)镠ashMap正是為快速查詢(xún)?cè)O(shè)計(jì)的:HashMap底層其實(shí)也是采用數(shù)組來(lái)存儲(chǔ)key-value對(duì)。但如果程序需要一個(gè)總是排序好的Map時(shí),則可以考慮使用TreeMap。

LinkedHashMap比HashMap慢一點(diǎn),因?yàn)樗枰S護(hù)鏈表來(lái)保持Map中key-value時(shí)的添加順序。IdentityHashMap心梗沒(méi)有特別出色之處,因?yàn)樗捎门cHashMap基本相似的實(shí)現(xiàn),只是它使用==而不是equals方法來(lái)判斷元素相等。EnumMap的性能最好,但它只能使用同一個(gè)枚舉類(lèi)的枚舉值作為key。

HashSet和HashMap的性能選項(xiàng)

對(duì)于HashSet及其子類(lèi)而言,它們采用hash算法來(lái)決定集合中元素的存儲(chǔ)位置,并通過(guò)hash算法來(lái)控制集合的代銷(xiāo);對(duì)于HashMap,Hashtable及其子類(lèi)而言,他們采用hash算法來(lái)決定Map中key的存儲(chǔ),并通過(guò)hash算法

設(shè)置不可變集合
public class NoModifyCollections {
    //不可變對(duì)象都不可以增加和刪除操作
    public static void main(String[] args) {
        //創(chuàng)建一個(gè)空的不可變的List對(duì)象
        List emptyList = Collections.emptyList();
        //創(chuàng)建一個(gè)還有一個(gè)元素,且不可改變的Set對(duì)象
        Set singleton = Collections.singleton("java");
        HashMap map = new HashMap<>();
        map.put("", "");
        //返回普通Map對(duì)象對(duì)應(yīng)的不可變版本
        Map map2 = Collections.unmodifiableMap(map);
    }
}

Java9 增加的不可變集合
public class NoModifyCollections9 {
    public static void main(String[] args) {
        List of = List.of("");
        Set of2 = Set.of("");
        Map of3 = Map.of("1","2","3","4");
        System.out.println(of3);//{3=4, 1=2}
        Map ofEntries = Map.ofEntries(Map.entry("", ""));
        System.out.println(ofEntries);//{=}
    }
}
繁瑣的接口Enumeration

繁瑣的接口Enumeration:只能遍歷Vector和Hashtable這種老java類(lèi)

public class EnumerationTeST {
    public static void main(String[] args) {
        Vector vector = new Vector();
        vector.add("3");
        vector.add("2");
        vector.add("1");
        Enumeration elements = vector.elements();
        while (elements.hasMoreElements()) {
            System.out.println(elements.nextElement()); // 3 2 1 
        }
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/69317.html

相關(guān)文章

  • Java編程基礎(chǔ)19——Map集合&斗地主案例

    摘要:使用默認(rèn)隨機(jī)源對(duì)指定列表進(jìn)行置換。將集合排序使用二分搜索法搜索指定列表,以獲得指定對(duì)象根據(jù)元素的自然順序,返回給定的最大元素。 1_Map集合概述和特點(diǎn) A:Map接口概述 查看API可以知道: 將鍵映射到值的對(duì)象 一個(gè)映射不能包含重復(fù)的鍵 每個(gè)鍵最多只能映射到一個(gè)值 B:Map接口和Collection接口的不同 Map是雙列的,Collection是單列的 Map...

    ygyooo 評(píng)論0 收藏0
  • Java集合框架——Map接口

    摘要:第三階段常見(jiàn)對(duì)象的學(xué)習(xí)集合框架集合在實(shí)際需求中,我們常常會(huì)遇到這樣的問(wèn)題,在諸多的數(shù)據(jù)中,通過(guò)其編號(hào)來(lái)尋找某一些信息,從而進(jìn)行查看或者修改,例如通過(guò)學(xué)號(hào)查詢(xún)學(xué)生信息。面試題和的區(qū)別是單列集合的頂層接口,有子接口和。 第三階段 JAVA常見(jiàn)對(duì)象的學(xué)習(xí) 集合框架——Map集合 showImg(https://segmentfault.com/img/remote/1460000019683...

    princekin 評(píng)論0 收藏0
  • Map學(xué)習(xí)二之LinkedHash,HashTable,計(jì)算一個(gè)給定字符串的每個(gè)字符出現(xiàn)的次數(shù)

    package com.itheima.demo03.Map; import java.util.HashMap;import java.util.LinkedHashMap; /* java.util.LinkedHashMap entends HashMap Map 接口的哈希表和鏈接列表實(shí)現(xiàn),具有可預(yù)知的迭代順序。 底層原理: 哈希表+鏈表(記錄元素的順序) */public cla...

    Rocture 評(píng)論0 收藏0
  • 1、Map接口 2、模擬斗地主洗牌發(fā)牌

    摘要:中的集合稱(chēng)為單列集合,中的集合稱(chēng)為雙列集合。洗牌通過(guò)數(shù)字完成洗牌發(fā)牌發(fā)牌將每個(gè)人以及底牌設(shè)計(jì)為將最后張牌直接存放于底牌,剩余牌通過(guò)對(duì)取模依次發(fā)牌。存放的過(guò)程中要求數(shù)字大小與斗地主規(guī)則的大小對(duì)應(yīng)。 01Map集合概述 A:Map集合概述: 我們通過(guò)查看Map接口描述,發(fā)現(xiàn)Map接口下的集合與Collection接口下的集合,它們存儲(chǔ)數(shù)據(jù)的形式不同 ? a:Collection中的集...

    付倫 評(píng)論0 收藏0
  • JAVA-集合類(lèi)概述(筆記)

    摘要:通常使用矢代器來(lái)實(shí)現(xiàn)遍歷集合。將集合中指定索引位置的對(duì)象改成指定的對(duì)象。三元運(yùn)算如果否則集合沒(méi)有繼承接口,它是提供到的映射,來(lái)決定遍歷對(duì)象的順序。 showImg(/img/bVldsA); 1.Collection接口是層次結(jié)構(gòu)中的跟接口。Collection接口通常不能直接使用,但該接口提供了添加元素,刪除元素,管理數(shù)據(jù)的方法。 Collection通常使用矢代器(Iterato...

    wangbinke 評(píng)論0 收藏0
  • Map學(xué)習(xí)一之基本操作方法put,get,remove,containsKey

    摘要:返回值存在返回對(duì)應(yīng)的值不存在返回創(chuàng)建集合對(duì)象趙麗穎楊穎林志玲楊穎迪麗熱巴把指定的鍵所對(duì)應(yīng)的鍵值對(duì)元素在集合中刪除,返回被刪除元素的值。 package com.itheima.demo01.Map; import java.util.HashMap;import java.util.Map; /* java.util.Map集合 Map集合的特點(diǎn): 1.Map集合是一個(gè)雙列集合...

    TwIStOy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<