日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開源 > 綜合技術(shù) > JAVA之旅(二十二)——Map概述,子類對(duì)象特點(diǎn),共性方法,keySet,entrySet,Map小練習(xí)

JAVA之旅(二十二)——Map概述,子類對(duì)象特點(diǎn),共性方法,keySet,entrySet,Map小練習(xí)

來源:程序員人生   發(fā)布時(shí)間:2016-07-04 16:10:59 閱讀次數(shù):2553次

JAVA之旅(2102)——Map概述,子類對(duì)象特點(diǎn),共性方法,keySet,entrySet,Map小練習(xí)


繼續(xù)堅(jiān)持下去吧,各位騷年們!

事實(shí)上,我們的數(shù)據(jù)結(jié)構(gòu),只剩下這個(gè)Map的知識(shí)點(diǎn)了,平時(shí)開發(fā)中,也是能看到他的,所以還是非常值得去學(xué)習(xí)的1個(gè)知識(shí)點(diǎn)的,我們直接開車了

1.Map概述

這里寫圖片描述

泛型< k,v> 鍵值對(duì),映照關(guān)系

基本特點(diǎn)

  • 該集合存儲(chǔ)鍵值對(duì),是1對(duì)1對(duì)往里存,而且要保證鍵的唯1性
    • 1.添加
      • put(key ,values)
      • putAll()
    • 2.刪除
      • clear()
      • remove(object key)
    • 3.判斷
      • containsValue(Object value)
      • containsKey(Object key)
      • isEmpty()
    • 4.獲得
      • get(Object key)
      • size()
      • values()
      • entrySet()
      • keySet()

我們的學(xué)習(xí)步驟也是這樣來的,

2.子類對(duì)象特點(diǎn)

Map有3個(gè)子類

  • Hashtable
    • 底層是哈希表數(shù)據(jù)結(jié)構(gòu),不可以存入null值或鍵,該集合是線程同步的

這里寫圖片描述

  • HashMap
    • 底層是哈希表數(shù)據(jù)結(jié)構(gòu),允許使用null的鍵值對(duì),線程是不同步的。效力高

這里寫圖片描述

  • TreeMap
    • 底層是2叉樹數(shù)據(jù)結(jié)構(gòu),線程不同步,可以用于給map集合中的鍵進(jìn)行排序

Map和Set很像,其實(shí)Set底層就是使用了Map集合

3.共性方法

我們看1下他們的共同點(diǎn)

package com.lgl.hellojava; import java.util.Collection; import java.util.HashMap; import java.util.Map; public class HelloJJAVA { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); // 添加元素 map.put("001", "zhangsan"); map.put("002", "lisi"); map.put("003", "wangwu"); System.out.println("原數(shù)據(jù):"+map); // 判斷是不是存在002的key System.out.println(map.containsKey("002")); //刪除 System.out.println(map.remove("002")); System.out.println("刪除后:"+map); //獲得 System.out.println("獲得:"+map.get("001")); //可以通過get方法的返回值來判斷1個(gè)鍵是不是存在 map.put(null, "haha"); System.out.println("null:"+map); //獲得map集合中所有的值 Collection<String> values = map.values(); System.out.println("map的值:"+values); } }

這里可以看到輸出的結(jié)果

這里寫圖片描述

但是這里要注意的是,添加元素,如果添加的時(shí)候,相同的鍵,那末后面的,會(huì)被后添加的覆蓋原本的鍵對(duì)應(yīng)的值,并put方法會(huì)返回被覆蓋的值

4.keySet

想取出他的值,他并沒有迭代器,那我們的思路可以轉(zhuǎn)變1下拿到他的所有的鍵再去get不就能夠拿到鍵值對(duì)了,我們來看1下

  • keySet
    • 將map中所有的值存入到Set集合中,由于Set具有迭代器,所有可以迭代方法取出的所有的鍵,根據(jù)get方法,獲得每個(gè)鍵對(duì)應(yīng)的值
package com.lgl.hellojava; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class HelloJJAVA { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("001", "zhangsan"); map.put("002", "lisi"); map.put("003", "wangwu"); // 先獲得map集合中的所有鍵的Set集合 Set<String> keySet = map.keySet(); // 有了Set集合就能夠獲得迭代器 Iterator<String> iterator = keySet.iterator(); while (iterator.hasNext()) { String string = iterator.next(); // 有了鍵可以通過map集合的get方法獲得其對(duì)應(yīng)的值 String value = map.get(string); System.out.println("key:" + string + "values:" + value); } } }

這類方法還是比較好理解的,對(duì)吧,但是這樣比較麻煩,我們來看另外一種

5.entrySet

package com.lgl.hellojava; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class HelloJJAVA { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("001", "zhangsan"); map.put("002", "lisi"); map.put("003", "wangwu"); // 將map集合中的映照關(guān)系取出,存入到Set集合中 Set<Entry<String, String>> entrySet = map.entrySet(); Iterator<Entry<String, String>> iterator = entrySet.iterator(); while (iterator.hasNext()) { Map.Entry<String, String> entry = iterator.next(); System.out.println(entry.getKey() + ":" + entry.getValue()); } } }

定義泛型雖然比較麻煩,但是取出來還是比較簡(jiǎn)單的,原理是甚么?其實(shí)我們可以寫1段偽代碼來講明的

package com.lgl.hello; public class HashMap implements Map { class Hahs implements Map.Entry { @Override public Object getKey() { // TODO Auto-generated method stub return null; } @Override public Object getValue() { // TODO Auto-generated method stub return null; } } } interface Map { public static interface Entry { public abstract Object getKey(); public abstract Object getValue(); } }

父子接口,直接訪問,內(nèi)部規(guī)則

6.Map小練習(xí)

我們可以通過1個(gè)小練習(xí)來學(xué)習(xí)1下使用規(guī)則,而需求,我直接寫在注釋上

package com.lgl.hellojava; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import java.util.Set; public class HelloJJAVA { public static void main(String[] args) { /** * 每一個(gè)學(xué)生都有對(duì)應(yīng)的歸屬地 學(xué)生Student,地址String 學(xué)生屬性:姓名和年齡 * 注意:姓名和年齡相同的視為同1個(gè)學(xué)生,保證學(xué)生的唯1性 * * 1.描寫學(xué)生 2.定義Map容器,將學(xué)生作為鍵,地址作為值存入 3.獲得Map容器中的元素 */ HashMap<Student, String> hm = new HashMap<Student, String>(); hm.put(new Student("zhangsan", 15), "beijing"); hm.put(new Student("lisi", 16), "shanghai"); hm.put(new Student("wangwu", 17), "guangzhou"); hm.put(new Student("liliu", 10), "shenzhen"); // 第1種取出方式keySet Set<Student> keySet = hm.keySet(); Iterator<Student> iterator = keySet.iterator(); while (iterator.hasNext()) { Student student = iterator.next(); String addr = hm.get(student); System.out.println(student + ":" + addr); } //第2種取出方式 entrySet Set<Entry<Student, String>> entrySet = hm.entrySet(); Iterator<Entry<Student, String>> iterator2 = entrySet.iterator(); while (iterator2.hasNext()) { Entry<Student, String> next = iterator2.next(); System.out.println(next.getKey()+":"+next.getValue()); } } } /** * 描寫學(xué)生 * * @author LGL * */ class Student implements Comparable<Student> { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } @Override public int hashCode() { // TODO Auto-generated method stub return name.hashCode() + age * 34; } @Override public boolean equals(Object obj) { if (!(obj instanceof Student)) throw new RuntimeException("類型不匹配"); Student s = (Student) obj; return this.name.equals(s.name) && this.age == s.age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int compareTo(Student s) { int num = new Integer(this.age).compareTo(new Integer(s.age)); if (num == 0) return this.name.compareTo(s.name); return num; } }

OK,例子就是用兩種取出的方式罷了,相信你自己也1定能做好的,好的,我們本節(jié)課到這里也就結(jié)束了,下節(jié)再見

有興趣的話,加下群:555974449

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美日韩精品一区二区三区四区 | 国产精品九九 | av片免费在线播放 | 亚洲欧美日韩一区 | 毛片国产 | 成人午夜影院 | 亚洲一区二区黄色 | 成人亚洲一区 | 国产v亚洲v天堂无码 | 精品视频网站 | 99久久无色码中文字幕婷婷 | 国产美女久久久 | 天久久| 国产欧美一区二区三区在线看蜜臀 | 亚洲天堂影院 | 成人精品国产免费网站 | 老司机成人 | 日韩中文一区二区 | 国产精品国产三级国产aⅴ入口 | 久久久成人精品 | 最近的中文字幕在线看 | 黄色三级在线免费观看 | 中国一级特黄毛片大片 | 美女又爽又黄视频毛茸茸 | 日韩黄色大片 | 99久久精品国产麻豆演员表 | 直接看av的网站 | 福利片在线观看 | 天天摸天天操天天干 | 高清国产一区二区三区 | a在线观看 | 久久久久国产精品一区二区 | 四虎4545www国产精品 | 日韩在线视频一区二区三区 | 亚洲高清在线观看 | 国产精品久久久久久久午夜片 | 高清国产一区二区三区 | av国产片| 久久久精品影院 | 久久精品国产一区二区电影 | 99久久99 |