精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Hashtable和HashMap引發(fā)的血案

開發(fā) 后端
本票文章很生動(dòng)的給Hashtable和HashMap舉例,并給出代碼,方便大家理解。

人物:

王小胖:性別:男。程序員,工作經(jīng)驗(yàn)1 year。愛好:吃肉、電玩、馬小花。特技:吃肉不用考慮胃的容量。

馬小花:性別:女。學(xué)生,工作經(jīng)驗(yàn)0 year。愛好:蛋糕、臭美、王小胖。特技:能夠降服王小胖……

/**2011年2月,電影《將愛情進(jìn)行到底》火得不得了。周末,小胖也陪著小花去看這部電影。放映中,小花被影片中的靖哥哥和杜拉拉感動(dòng)的一沓糊涂,而小胖則心里暗自后悔沒有買一袋大爆米花來打發(fā)這無聊的時(shí)間。影片結(jié)束,小花已經(jīng)是鼻涕一把淚一把,小胖也只有裝模作樣地抽動(dòng)了幾下鼻子,一心只想著一會(huì)兒是吃麥當(dāng)勞還是必勝客。*/

回到家中,小胖和小花各自玩著電腦。

小花:胖子,你知道Hashtable和HashMap的區(qū)別嗎?

小胖:略知。

小花:……裝什么!!給我講講!!!

小胖:好的……

第一個(gè)區(qū)別就先來說說繼承關(guān)系吧。

如果你在baidu里google一下(技術(shù)類文章的搜索還是推薦google),會(huì)發(fā)現(xiàn)網(wǎng)上的大致說法與“由于Java發(fā)展的歷史原因。Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn)。”相同。這種說法沒有錯(cuò),但是胖子覺得不夠準(zhǔn)確,特別是對(duì)于我們這種大眾菜鳥來說,如果不去深究的話,可能就會(huì)造成一些理解上的差異。簡(jiǎn)單的認(rèn)為Hashtable沒有繼承Map接口。胖子之前就犯過這樣的錯(cuò)誤(胖子承認(rèn)自己笨,是真笨……)。

小花:那你怎么知道它們兩個(gè)各自的繼承關(guān)系呢?胖子。

我們可以參考一下最新的JDK1.6的源碼,看看這兩個(gè)類的定義:

Java代碼

 

  1. public class Hashtable     
  2.     extends Dictionary     
  3. implements Map, Cloneable, java.io.Serializable {…}     
  4.       
  5. public class HashMap     
  6.     extends AbstractMap     
  7. implements Map, Cloneable, Serializable {…}   

可以看到hashtable也是繼承了Map接口。它們的不同是Hashtable(since JDK1.0)就繼承了Dictionary這個(gè)抽象類,而HashMap(since JDK1.2)繼承的則是AbstractMap這個(gè)抽象類。因?yàn)樵贖ashtable中看到繼承Map后所實(shí)現(xiàn)的方法是JDK1.2版本時(shí)加上去的,所以胖子猜想可能是在JDK 1.2開發(fā)時(shí)Sun工程師出于統(tǒng)一的考慮使得Hashtable也繼承了Map接口。

小花:哦,原來JDK源碼還能看出來這個(gè)。

小胖:……后面還能看出更多東西的。

小花:好期待啊。

第二個(gè)區(qū)別我們從同步和并發(fā)性上來說說它們兩個(gè)的不同。

可以通過這兩個(gè)類得源碼來分析,Hashtable中的主要方法都做了同步處理,而HashMap則沒有。可以說Hashtable在默認(rèn)情況支持同步,而HashMap在默認(rèn)情況下是不支持的。我們?cè)诙嗑€程并發(fā)的環(huán)境下,可以直接使用Hashtable,但是要使用HashMap的話就要自己增加同步處理了。對(duì)HashMap的同步處理可以使用Collections類提供的synchronizedMap靜態(tài)方法;或者直接使用JDK5.0之后提供的java.util.concurrent包里的ConcurrentHashMap類。

小胖:synchronizedMap靜態(tài)方法和ConcurrentHashMap類我會(huì)以后再給你詳細(xì)講一下的。肥婆。

小花:你保證啊。鑰匙忘了你知道后果的。

小胖:好的……

第三個(gè)區(qū)別就是它們對(duì)于null值的處理方式了。

我們依然能夠從源代碼中得知,Hashtable中,key和value都不允許出現(xiàn)null值。

Java代碼

 

  1. public synchronized V put(K key, V value) {     
  2.    // Make sure the value is not null     
  3.    if (value == null) {     
  4.        throw new NullPointerException();     
  5.    }     
  6.       
  7.    // Makes sure the key is not already in the hashtable.     
  8.    Entry tab[] = table;     
  9.    int hash = key.hashCode();     
  10.    int index = (hash & 0x7FFFFFFF) % tab.length;     
  11.    //…     
  12. }   

在我們使用上面的方法時(shí),如參數(shù)value為null,可以從代碼中直接看出程序會(huì)拋出NullPointerException;而在key為null時(shí),則會(huì)在“int hash = key.hashCode();“這段計(jì)算Hash值的過程中拋出NullPointerException。而在在HashMap中,允許null作為key存在,并且和其他key的特性一樣,這樣的null值key只能有一個(gè);另外HashMap允許多個(gè)value為null。這樣大家就要注意了, HashMap中就不能用get(key)方法來判斷HashMap中是否存在某個(gè)key,因?yàn)関alue為null和不存在該key的Entry都會(huì)返回null值,而應(yīng)該用containsKey()方法來判斷了。

Java代碼

 

  1. import java.util.HashMap;     
  2. import java.util.Map;     
  3. import java.util.Map.Entry;     
  4.       
  5. public class TestCase {     
  6.       
  7.     public static void main(String[] args) {     
  8.        Map hashMap = new HashMap();     
  9.        hashMap.put(0null);     
  10.        hashMap.put(1"one");     
  11.        hashMap.put(2"two");     
  12.        hashMap.put(null"null");     
  13.        for(Entry e : hashMap.entrySet()) {     
  14.            System.out.println("Key: " + e.getKey() + " -- Value: " + e.getValue());     
  15.        }     
  16.        System.out.println(hashMap.get(0));     
  17.        System.out.println(hashMap.get(4));     
  18.        System.out.println("Contains key 0 ? :" + hashMap.containsKey(0));     
  19.        System.out.println("Contains key 4 ? :" + hashMap.containsKey(4));     
  20.        System.out.println("Contains value null ? :" + hashMap.containsValue(null));     
  21.     }     
  22.       
  23. }  

結(jié)果:

Java代碼

 

  1. Key: null -- Value: null    
  2. Key: 0 -- Value: null    
  3. Key: 1 -- Value: one     
  4. Key: 2 -- Value: two     
  5. null    
  6. null    
  7. Contains key 0 ? :true    
  8. Contains key 4 ? :false    
  9. Contains value null ? :true   

HashMap對(duì)于null值key的處理網(wǎng)上有說“null 用new Object()來代替,其Entry.hashCode=0,而且在取出的時(shí)候還會(huì)還回null的。”胖子我在讀取源碼的過程中看到了null值的hash值確實(shí)是0 (內(nèi)部實(shí)現(xiàn)的數(shù)組中的index也是),但是能力有限沒有看到轉(zhuǎn)為new Object()的過程。

小花: 原來hashMap的containsKey還有這么個(gè)陷阱,以后肥婆要小心了。

第四個(gè)不同就是它們兩個(gè)Hash值的獲取方式了。

還是通過源代碼源代碼,Hashtable是直接使用key對(duì)象的hash值。

Java代碼

 

  1. public synchronized V put(K key, V value) {     
  2.        // Make sure the value is not null     
  3.        if (value == null) {     
  4.            throw new NullPointerException();     
  5.        }     
  6.       
  7.        // Makes sure the key is not already in the hashtable.     
  8.        Entry tab[] = table;     
  9.        int hash = key.hashCode();//hashcode     
  10.        int index = (hash & 0x7FFFFFFF) % tab.length;     
  11.        //…     
  12. }   

而HashMap則是利用key對(duì)象的hash值重新計(jì)算一個(gè)新的hash值。

Java代碼

 

  1. public V put(K key, V value) {     
  2.         if (key == null)     
  3.             return putForNullKey(value);     
  4.         int hash = hash(key.hashCode());//hashcode     
  5.         int i = indexFor(hash, table.length);     
  6.         //…     
  7. }     
  8.       
  9. static int hash(int h) {     
  10.         h ^= (h >>> 20) ^ (h >>> 12);     
  11.         return h ^ (h >>> 7) ^ (h >>> 4);     
  12.     }  

小花:胖子,都用了hash算法,你給我講講Hash算法吧。

小胖:嗯……以后的,今天我比較忙(其實(shí)是不會(huì))。

小花:你是不是不會(huì)啊?嘿嘿(壞笑)。

小胖:什么不會(huì)……談下一話題……

第五個(gè)不同就是Hashtable和HashMap它們兩個(gè)內(nèi)部實(shí)現(xiàn)方式的數(shù)組的初始大小和擴(kuò)容的方式。

HashMap中內(nèi)部數(shù)組的初始容量是16, 加載因子為0.75,而且數(shù)組容量增容后也要是2指數(shù)次冪:

Java代碼

 

  1. /**    
  2.      * The default initial capacity - MUST be a power of two.    
  3.      */    
  4. static final int DEFAULT_INITIAL_CAPACITY = 16;     
  5. /**    
  6.      * The load factor used when none specified in constructor.    
  7.      */    
  8.     static final float DEFAULT_LOAD_FACTOR = 0.75f; 

HashTable中的內(nèi)部數(shù)組的初始容量是11,加載因子也是0.75數(shù)組的增容方式為(oldCapacity * 2 + 1):

Java代碼

 

  1. public Hashtable() {     
  2.        this(110.75f);     
  3.  }     
  4.       
  5. protected void rehash() {     
  6.        int oldCapacity = table.length;     
  7.        Entry[] oldMap = table;     
  8.       
  9.        int newCapacity = oldCapacity * 2 + 1;     
  10.        //…     
  11. }   

第六個(gè)不同我們從它們兩個(gè)遍歷方式的內(nèi)部實(shí)現(xiàn)上來說。

Hashtable HashMap都使用了 Iterator。而由于歷史原因,Hashtable還使用了Enumeration的方式 。

小花:Iterator和Enumeration的區(qū)別是什么啊?給我講講。

小胖:我不是說我沒有時(shí)間嘛,下回的。

小花:我都記下來,省得你給我混過去。(拿起筆開始記賬中)

小胖:……(緊張)

第七個(gè)不同時(shí)它們的拷貝構(gòu)造函數(shù)的不同。

依然是通過查看源碼,可以發(fā)現(xiàn)它們兩個(gè)對(duì)于拷貝函數(shù)初始容量的不同值。

HashMap的實(shí)現(xiàn)是:

Java代碼

 

  1. public HashMap(Mapextends K, ? extends V> m) {     
  2.         this(Math.max((int) (m.size() / DEFAULT_LOAD_FACTOR) + 1,     
  3.                       DEFAULT_INITIAL_CAPACITY), DEFAULT_LOAD_FACTOR);     
  4.         putAllForCreate(m);     
  5.     }   

而Hashtable的實(shí)現(xiàn)是:

Java代碼

 

  1. public Hashtable(Mapextends K, ? extends V> t) {     
  2.        this(Math.max(2*t.size(), 11), 0.75f);     
  3.        putAll(t);     
  4.     }   

小胖:今天講的已經(jīng)很多了。我有點(diǎn)餓了,肥婆。

小花:看你今天的表現(xiàn)這么好。走,帶你去吃烤肉去。

小胖:哈哈,肥婆萬歲。

PS:下面打算寫的一些東西

TreeMap的排序及其他相關(guān)集合類

synchronizedMap的使用方式

concurrentMap實(shí)現(xiàn)細(xì)節(jié)和使用

Properties使用說明和 擴(kuò)展

Iterator和Enumeration的區(qū)別

Hash算法 的實(shí)現(xiàn)

【編輯推薦】

  1. 透過Java中的HashMap了解Map接口
  2. Java中對(duì)HashMap的深度分析
  3. Java中對(duì)HashMap的深度分析與比較
  4. 深入探究J2ME Hashtable實(shí)現(xiàn)原理
  5. java的hashtable的用法
責(zé)任編輯:金賀 來源: JavaEye博客
相關(guān)推薦

2021-01-11 05:30:04

Boot 單機(jī)片

2015-02-04 14:36:07

格式串漏洞Ghost漏洞安全漏洞

2017-03-20 19:40:29

AndroidSwipeRefres下拉刷新

2021-07-27 07:12:11

Getter接口Setter

2023-01-11 08:41:47

微服務(wù)循環(huán)依賴

2022-04-12 08:43:04

生產(chǎn)故障Dubbo調(diào)用

2021-12-01 06:59:27

架構(gòu)

2019-09-09 08:30:57

MYSQL代碼數(shù)據(jù)庫(kù)

2018-11-22 15:50:27

MySQL數(shù)據(jù)庫(kù)雙引號(hào)

2021-01-25 08:08:22

APP機(jī)器人KOB

2020-01-06 09:43:14

賠償TSB遷移

2024-09-04 15:17:23

2017-05-22 08:35:07

MySQL雙引號(hào)錯(cuò)位

2021-02-01 10:42:47

MySQL雙引號(hào)數(shù)據(jù)庫(kù)

2013-08-26 10:19:24

納斯達(dá)克數(shù)據(jù)專線交易暫停

2016-12-01 09:30:03

運(yùn)維網(wǎng)絡(luò)網(wǎng)線

2017-08-25 16:38:05

表達(dá)式正則血案

2013-03-18 09:56:18

2022-06-14 08:00:28

切換包管理器版本

2011-05-20 12:34:05

大話IT云服務(wù)中斷亞馬遜
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

精品国产乱码久久久久久夜甘婷婷| 好看的亚洲午夜视频在线| 一本色道久久综合狠狠躁的推荐| 日本一区二区三区免费观看| 伊人色综合久久久| 韩国精品一区二区三区| 国产丝袜一区二区| 久久久久无码精品| 成人不卡视频| 亚洲妇熟xx妇色黄| 亚洲欧洲一区二区| 四虎免费在线观看| 久久国产精品72免费观看| 午夜精品久久久久久久男人的天堂 | 国产精品一区二区三区不卡| 国产高潮国产高潮久久久91 | 狂野欧美一区| 久精品免费视频| 白白色免费视频| 6080亚洲理论片在线观看| 欧美性大战久久久久久久蜜臀| 青青草综合在线| 1769视频在线播放免费观看| heyzo一本久久综合| 成人精品视频99在线观看免费| 欧美bbbbbbbbbbbb精品| 欧美日韩调教| 久久精品夜夜夜夜夜久久| 泷泽萝拉在线播放| 91精品国产自产精品男人的天堂| 欧美欧美欧美欧美| 91激情视频在线| 在线免费日韩片| 午夜私人影院久久久久| 青青草免费在线视频观看| 成人精品一区二区三区免费| 神马电影久久| 精品国产乱码久久久久久久| 九九九久久久久久久| 成人亚洲免费| 91久久精品一区二区三| 免费在线激情视频| 亚洲美女尤物影院| 精品欧美激情精品一区| 免费看国产一级片| 91禁在线看| 亚洲成人在线网站| 日本手机在线视频| 久草在线资源福利站| 亚洲成人av免费| 国产欧美日韩网站| av在线中出| 精品国产91久久久| 波多野结衣家庭教师在线| 免费一二一二在线视频| 欧美日韩国产精品专区| 黄色动漫在线免费看| 超级碰碰久久| 欧美婷婷六月丁香综合色| 国产精品igao| 亚洲激情成人| www.久久撸.com| 黄色香蕉视频在线观看| 欧美电影三区| 操日韩av在线电影| 国产suv一区二区三区| 伊人久久大香线| 欧美精品久久久久久久免费观看| 久久国产在线观看| 一区二区三区高清视频在线观看| 17婷婷久久www| 国产99久久久久久免费看| 美腿丝袜亚洲色图| 亚洲aaaaaa| 欧美特级特黄aaaaaa在线看| av一二三不卡影片| 日韩成人在线资源| 久草资源在线观看| av在线导航| 伊人久久久久久久久久久久| 欧美日本一区二区高清播放视频| 欧美激情一区二区三区成人| 久久夜靖品2区| 丝袜美腿高跟呻吟高潮一区| 国产综合香蕉五月婷在线| 99久久久无码国产精品免费| 北条麻妃国产九九精品视频| 欧美久久久久久久| jizz性欧美10| 欧美性高潮床叫视频| 亚洲天堂2018av| 99香蕉久久| 国产香蕉一区二区三区在线视频| 亚洲一二三四五六区| 精品999日本| 国产精品免费一区豆花| 亚洲xxxx天美| 国产精品三级av| 国产精品美女免费| 国产aⅴ爽av久久久久成人| 99re这里只有精品6| 亚洲一区二区免费视频软件合集| 福利写真视频网站在线| 在线观看网站黄不卡| 国产精品熟女一区二区不卡| 日韩mv欧美mv国产网站| 久久精品男人天堂| 日日夜夜操视频| 国产成人亚洲精品青草天美| 天天好比中文综合网| 阿v视频在线观看| 欧美日韩高清一区二区三区| 国产ts在线播放| 欧美色123| 成人亲热视频网站| 精品无人区一区二区三区竹菊| 欧美精品一二三四区| 国产剧情av麻豆香蕉精品| 日韩av一区二区三区在线| h片在线观看视频免费| 欧美一级高清片在线观看| 特级西西www444人体聚色 | 特大黑人娇小亚洲女mp4| 四虎4545www精品视频| 亚洲国内精品视频| 久久久久亚洲av无码专区| 九色综合狠狠综合久久| 深田咏美在线x99av| 粉嫩一区二区| 亚洲精品国精品久久99热一| 国产午夜精品无码| 国产大陆a不卡| 草草草视频在线观看| 日韩午夜视频在线| 中文字幕自拍vr一区二区三区| 无码人妻av免费一区二区三区| caoporen国产精品视频| 九九热只有这里有精品| 91麻豆精品激情在线观看最新 | 亚洲大胆人体在线| 日韩在线视频免费观看| 成人欧美一区二区三区黑人一| 久久这里只有| 免费在线观看91| 欧美freesex| 亚洲视频电影图片偷拍一区| 免费的毛片视频| 久久久另类综合| 成人性做爰aaa片免费看不忠| 亚洲激情播播| 国产激情999| 成人精品一区二区| 欧美日韩卡一卡二| 三级在线观看免费大全| 国产精品77777竹菊影视小说| 九九久久九九久久| 国产精品国产| 国产成人精品免高潮在线观看| 国产午夜精品一区理论片| 91久久精品国产91性色tv| 制服 丝袜 综合 日韩 欧美| 欧美a级在线| 国产欧美日韩综合一区在线观看| 国产网站在线| 国产午夜一区二区| 国产精品爽爽久久| 亚洲尤物视频在线| 国产美女喷水视频| 特级西西444www大精品视频免费看| 韩国欧美国产1区| 日韩精品免费一区| 自拍偷拍18p| 亚洲深夜福利在线观看| 日韩av手机在线| 午夜在线视频播放| 欧美一卡二卡在线观看| 日本网站免费观看| 国产欧美一区二区精品忘忧草| 日韩成人精品视频在线观看| 欧美日本精品| 欧美动漫一区二区| 在线不卡一区| 2019日本中文字幕| 婷婷成人激情| 亚洲国产精品悠悠久久琪琪| 日韩电影在线观看一区二区| 18涩涩午夜精品.www| 2一3sex性hd| 精品一区免费av| 少妇高潮喷水在线观看| 人人狠狠综合久久亚洲婷| 97视频资源在线观看| 成人直播视频| 久久大大胆人体| 男女视频在线观看免费| 91精品国产一区二区三区蜜臀| www日韩精品| ...av二区三区久久精品| 精品人妻一区二区免费视频| 久久国产综合精品| 欧美 国产 综合| 午夜久久99| 亚洲国产精品视频一区| 开心激情综合| 成人中心免费视频| 免费亚洲电影| 欧美激情一区二区三级高清视频| yiren22综合网成人| 亚洲а∨天堂久久精品喷水| 国产又粗又长又大视频| 91福利国产精品| 在线看成人av| 一区二区三区中文免费| 精品手机在线视频| 91九色精品| 一区二区三区成人| 91av在线免费| 国产91精品一区二区| 岛国毛片在线播放| 久久婷婷丁香| 自慰无码一区二区三区| 国自产拍偷拍福利精品免费一 | 日本一级在线观看| 欧美成人综合网站| hs视频在线观看| 欧美日本一道本| 波多野结衣一区二区三区四区| 同产精品九九九| 日本熟妇毛茸茸丰满| 亚洲精品乱码久久久久| www日韩在线| 中文字幕一区二区日韩精品绯色| 成人无码av片在线观看| 久久久久久久久久美女| 色噜噜在线观看| 99精品欧美一区二区三区综合在线| 好吊操视频这里只有精品| 国产乱码精品一品二品| 四虎成人在线播放| 国产精品综合视频| 国产xxx在线观看 | 国产美女永久免费无遮挡| 久久一区二区视频| 在线 丝袜 欧美 日韩 制服| 99久久婷婷国产综合精品| 国产精品成人99一区无码 | 99久久久无码国产精品衣服| 国产日韩视频一区二区三区| 午夜在线观看一区| 中文一区在线播放| 国产精品精品软件男同| 亚洲少妇最新在线视频| 成人在线观看小视频| 亚洲激情在线激情| 久久精品波多野结衣| 亚洲国产日韩在线一区模特| 日韩av综合在线| 色综合久久久久综合体桃花网| 999视频在线| 欧美日本视频在线| 精品人妻一区二区三区含羞草 | 国产一二三四五区| 国产精品久久久久久户外露出 | а天堂中文在线官网| 17c丨国产丨精品视频| 亚洲va在线va天堂va偷拍| 国产一区二区三区不卡视频网站| 欧美日韩天天操| 精品国产不卡| 亚洲伊人婷婷| 中文无码久久精品| 2018国产在线| 久久伊人亚洲| 亚洲自拍第三页| 白白色 亚洲乱淫| 国产成人福利在线| 亚洲另类一区二区| 国产成人在线视频观看| 欧美日韩一区二区三区视频| 国产手机精品视频| 亚洲精品视频免费在线观看| 日本在线免费中文字幕| 欧美激情亚洲另类| 成人视屏在线观看| 97在线中文字幕| 免费短视频成人日韩| 一级特黄妇女高潮| 国产精品美女| 国产一区二区在线观看免费视频| 高清av一区二区| 欧美a在线播放| 一区二区在线观看免费视频播放| 免费黄色网址在线| 日韩三级精品电影久久久| 撸视在线观看免费视频| 麻豆乱码国产一区二区三区| 亚洲天堂av影院| 91精品国自产在线观看| 精品日韩欧美一区| 国产精品专区在线| 紧缚捆绑精品一区二区| 我和岳m愉情xxxⅹ视频| 亚洲情趣在线观看| 91黑人精品一区二区三区| 日韩精品自拍偷拍| 三区四区电影在线观看| 欧洲一区二区视频| 亚洲图色一区二区三区| 永久免费精品视频网站| 亚洲影音一区| 日韩女优在线视频| 少妇高潮一区二区三区99小说 | a级片在线免费看| 国产一区二区动漫| 人狥杂交一区欧美二区| 91久久国产自产拍夜夜嗨| 日本a级不卡| 可以免费观看av毛片| 99久久精品国产网站| 成熟的女同志hd| 51精品国自产在线| 在线a免费看| 国产精品国语对白| 偷拍自拍一区| 欧美爱爱视频免费看| 国产伦精品一区二区三区视频青涩| 天堂网av2018| 一本大道久久a久久综合| 搡老岳熟女国产熟妇| 九九热精品视频在线播放| 精品一区二区三区中文字幕视频| 亚洲高清乱码| 日韩电影免费在线观看网站| 黄色片视频免费观看| 亚州成人在线电影| 蜜臀久久久久久999| 欧美日韩aaaa| 婷婷综合国产| 真实国产乱子伦对白视频| 国产不卡视频一区| 久久亚洲精品大全| 欧美va在线播放| 丁香影院在线| 国精产品一区二区| 国产亚洲精品自拍| 六月婷婷七月丁香| 欧美性猛交xxxx免费看久久久| 清纯唯美亚洲色图| 日产精品99久久久久久| 超碰在线观看99| 亚洲综合视频网| 亚洲精品国产片| 午夜精品三级视频福利| 亚洲品质自拍| 91激情视频在线| 国产精品乱码一区二区三区软件| 中文字幕一区二区免费| 久久久国产视频| 哺乳一区二区三区中文视频 | 亚洲精品一区二区三区99| 黑人另类精品××××性爽| 国产一区国产精品| 玖玖玖国产精品| 99成人在线观看| 日韩久久免费av| 新片速递亚洲合集欧美合集| 视频一区亚洲| 国产老肥熟一区二区三区| 日韩精品久久久久久久酒店| 亚洲欧美日韩成人| 日韩在线你懂得| aa视频在线播放| 国产清纯白嫩初高生在线观看91| 91在线精品入口| 亚洲3p在线观看| 四季av一区二区凹凸精品| ass极品水嫩小美女ass| 欧美日韩加勒比精品一区| 超碰在线国产| 99精彩视频在线观看免费| 香蕉成人久久| 国产极品美女在线| 亚洲丁香婷深爱综合| 国产精品videossex撒尿| 中文字幕日韩精品无码内射| 91老司机福利 在线| 亚洲最新av网站| 51精品在线观看| 99久精品视频在线观看视频| 一边摸一边做爽的视频17国产 | 日本激情视频在线播放| 亚洲最大的成人av| 国模精品一区二区| av成人免费观看| 美女国产一区二区| 日韩精品一区二区三区国语自制| 中文字幕亚洲字幕| 四虎5151久久欧美毛片| 激情成人在线观看| 在线免费av一区|