日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Map和Set,简单模拟实现哈希表以及哈希表部分底层源码的分析

發布時間:2024/1/8 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Map和Set,简单模拟实现哈希表以及哈希表部分底层源码的分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • Map和Set的簡單介紹
  • 降低哈希沖突發生的概率以及當沖突發生時如何解決哈希沖突
  • 簡單模擬實現哈希表--1.key為整形;2.key為引用類型
  • 哈希表部分底層源碼的分析

1.Map和Set的簡單介紹

1.1.Map的說明

Map :Key-Value 模型,什么是key - value模型呢,就比如梁山好漢的江湖綽號:豹子頭 - 林沖 等等。Map 中存儲的就是 key-value的鍵值對, Map 是一個接口類,該類沒有繼承自 Collection ,該類中存儲的是 <K,V> 結構的鍵值對,并且 K 一定是唯一的,不 能重復 。

1.2.Map方法的介紹

方法解釋
V get (Object key) 返回 key 對應的 value
V getOrDefault (Object key, V defaultValue) 返回 key 對應的 value key 不存在,返回默認值
V put (K key, V value) 設置 key 對應的 value
V remove (Object key) 刪除 key 對應的映射關系
Set<K> keySet () 返回所有 key 的不重復集合
Collection<V> values () 返回所有 value 的可重復集合
Set<Map.Entry<K, V>> entrySet () 返回所有的 key-value 映射關系
boolean containsKey (Object key) 判斷是否包含 key
boolean containsValue (Object value) 判斷是否包含 value
Map的注意事項: 1. Map 是一個接口,不能直接實例化對象 ,如果 要實例化對象只能實例化其實現類 TreeMap 或者 HashMap。 2. Map 中存放鍵值對的 Key 是唯一的, value 是可以重復的(重復的情況,后面put的覆蓋前面的)。 3. Map 中的 Key 可以全部分離出來,存儲到 Set 來進行訪問 ( 因為 Key 不能重復 ) 4. Map 中的 value 可以全部分離出來,存儲在 Collection 的任何一個子集合中 (value 可能有重復 ) 。 5. Map 中鍵值對的 Key 不能直接修改, value 可以修改,如果要修改 key ,只能先將該 key 刪除掉,然后再來進行重新插入。 TreeMap HashMap 的區別:
Map 底層結構 TreeMap HashMap
底層結構 紅黑樹 哈希桶
插入 / 刪除 / 查找時間 復雜度 O(log2^N) O(1)
是否有序 關于key有序 無序
線程安全 不安全不安全
插入/刪除/查找區別需要進行元素比較通過哈希函數計算哈希地址
比較與覆寫 key必須能夠比較,否則會拋出 ClassCastException異常 自定義類型需要覆寫equals hashCode方法
應用場景 需要 Key 有序場景下 Key 是否有序不關心,需要更高的 時間性能
其中 Set<Map.Entry<K, V>> entry Set() 這個方法非常復雜但也非常重要,所以要做一些具體的說明: Map.Entry<K, V> Map 內部實現的用來存放? <key, value>? 鍵值對映射關系的內部類 ,該內部類中主要提供了? <key, value> 的獲取, value 的設置以及 Key 的比較方式。 如何理解????通俗來說就是: Entry是Map里面的一個內部類,而 Map.Entry<key,val> 的作用就是把一個個map元素(key,val) 打包成一個整體,而這個整體的類型就是 Map.Entry<K,V>, 然后我們有一個Set集合,它里面存放的每個元素的類型就是 Map.Entry<K,V>。這里可以聯想到我們的單鏈表的內部類ListNode,將 val,next 打包成一個整體,那么它的類型就是ListNode。

?所以下面這段代碼運行起來一定會把Set集合中存放的map中的每一個元素都輸出出來:

public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("hello",2);map.put("world",1);map.put("bit",3);Set<Map.Entry<String, Integer>> entrySet = map.entrySet();for (Map.Entry<String,Integer> entry:entrySet) {System.out.println("key: "+entry.getKey()+" val: "+entry.getValue());} }

該內部類Entry提供的一些方法也是比較重要的:

方法 解釋
K getKey () 返回 entry 中的 key
V getValue () 返回 entry 中的 value
V setValue(V value) 將鍵值對中的 value 替換為指定 value

1.3.Set的說明

Set Map 主要的不同有兩點: Set 是繼承自 Collection 的接口類, Set 中只存儲了 Key

1.4.Set方法的介紹

方法 解釋
boolean add (E e) 添加元素,但重復元素不會被添加成功
void clear () 清空集合
boolean contains (Object o) 判斷 o 是否在集合中
Iterator<E> iterator () 返回迭代器
boolean remove (Object o) 刪除集合中的 o
int size() 返回set 中元素的個數
boolean isEmpty() 檢測 set 是否為空,空返回 true ,否則返回 false
Object[] toArray() set 中的元素轉換為數組返回
boolean containsAll(Collection<?> c) 集合 c 中的元素是否在 set 中全部存在,是返回 true ,否則返回false
boolean addAll(Collection<? extends E> c) 將集合 c 中的元素添加到 set 中,可以達到去重的效果

Set的注意事項:

1. Set 是繼承自 Collection 的一個接口類。 2. Set 中只存儲了 key ,并且要求 key 一定要唯一。 3. Set 的底層是使用 Map 來實現的,其使用 key Object 的一個默認對象作為鍵值對插入到 Map 中的。 4. Set 最大的功能就是對集合中的元素進行去重。 5. 實現 Set 接口的常用類有 TreeSet HashSet ,還有一個 LinkedHashSet LinkedHashSet 是在 HashSet 的基礎上維護了一個雙向鏈表來記錄元素的插入次序。 6. Set 中的 Key 不能修改,如果要修改,先將原來的刪除掉,然后再重新插入。 7. Set 中不能插入 null key 。 TreeSet HashSet 的區別
Set 底層結構 TreeSet HashSet
底層結構紅黑樹哈希桶
插入/刪除/查找時間復雜度O(log2^N)O(1)
是否有序 關于 Key 有序 不一定有序
線程安全 不安全 不安全
插入/刪除/查找區別 按照紅黑樹的特性來進行插入和刪除 1. 先計算key哈希地址 2. 然后進行 插入和刪除
比較與覆寫 key必須能夠比較,否則會拋出 ClassCastException異常 自定義類型需要覆寫equals hashCode方法
應用場景需要Key有序場景下 Key 是否有序不關心,需要更高的 時間性能

為什么HashMap和HashSet無序,而TreeMap和TreeSet有序??后面會解釋到。


2.降低哈希沖突發生的概率以及當沖突發生時如何解決哈希沖突

2.1.概念

不同關鍵字通過相同哈希哈數計算出相同的哈希地址,該種現象稱為哈希沖突或哈希碰撞。

把具有不同關鍵碼而具有相同哈希地址的數據元素稱為“同義詞”。

?2.2.降低哈希沖突的發生的概率

兩種解決方法

1.設計好的哈希函數;2.降低負載因子

2.2.1.設計好的哈希函數

哈希函數設計原則
  • 哈希函數的定義域必須包括需要存儲的全部關鍵碼,而如果散列表允許有m個地址時,其值域必須在0到m-1之間。
  • 哈希函數計算出來的地址能均勻分布在整個空間中。
  • 哈希函數應該比較簡單。

常用的兩種哈希函數

1. 直接定制法 取關鍵字的某個線性函數為散列地址: Hash Key = A*Key + B 優點:簡單、均勻。 缺點:需要事先知道關 鍵字的分布情況 使用場景:適合查找比較小且連續的情況。 力扣上這道題可以幫助我們理解: 字符串中第一個只出現一次字符

2.?除留余數法

設散列表中允許的 地址數為 m ,取一個不大于 m ,但最接近或者等于 m 的質數 p 作為除數,按照哈希函數: Hash(key) = key% p(p<=m), 將關鍵碼轉換成哈希地址

?2.2.2.降低負載因子

下圖是沖突率和負載因子的關系圖:

?從圖中我們可以直到要想降低沖突的概率,只能減小負載因子,而負載因子又取決于數組的長度。

公式:? ?負載因子 = 哈希表中元素的個數 / 數組的長度

因為哈希表中的已有的元素個數是不可變的,所以我們只能通過增大數組長度來降低負載因子。

2.3.當沖突發生時如何解決哈希沖突(簡單介紹)

解決哈希沖突 兩種常見的方法是: 閉散列 開散列 閉散列:有兩種(線性探測法&&二次探測法) 閉散列:也叫開放定址法,當發生哈希沖突時,如果哈希表未被裝滿,說明在哈希表中必然還有空位置,那么可以 key 存放到沖突位置中的 下一個 空位置中去。 開散列:它的叫法有很多,也叫做哈希桶/鏈地址法/拉鏈法 開散列: 首先對關鍵碼集合用散列函數計算散列地址,具有相同地址的關鍵碼歸于同一子 集合,每一個子集合稱為一個桶,各個桶中的元素通過一個單鏈表鏈接起來,各鏈表的頭結點存儲在哈希表中。開散列,可以認為是把一個在大集合中的搜索問題轉化為在小集合中做搜索了。?參照下圖:


3.簡單模擬實現哈希表

3.1.哈希表概念

我們之前學過的順序結構和平衡樹中,查找一個元素時,都要經過關鍵碼的多次比較順序查找的效率O(N),平衡樹的查找效率O(logN)。這些都不是我們想要的搜索方法,我們想要的搜索方法是O(1),可以不經過任何比較,一次直接從表中得到要搜索的元素。 如果構造一種存儲結構,通過某種函數(hashFunc)使元素的存儲位置與它的關鍵碼之間能夠建立一一映射的關系,那么在查找時通過該函數可以很快找到該元素。向該結構中插入元素時以某種哈希函數插入,取元素的時候,也通過該哈希函數取出來,該方式即為哈希(散列)方法構造出來的結構稱為哈希表(Hash?Table)(或者稱散列表)

但該種方法插入元素的時候,也有一定的缺陷,就是一定會存在哈希沖突,但是可以接受。

3.2.哈希表的簡單實現

代碼實現

public class HashBuck {static class Node {public int key;public int val;public Node next;public Node(int key, int val) {this.key = key;this.val = val;}}public Node[] array;public int usedSize;public static final double DEFAULT_LOAD_FACTOR = 0.75;//負載因子public static final int DEFAULT_SIZE = 8;public HashBuck() {this.array = new Node[DEFAULT_SIZE];}//插入數據public void put(int key, int val) {Node node = new Node(key, val);int index = key % array.length;Node cur = array[index];//檢查桶里面有無相同key的元素,有則覆蓋val,沒有則頭插while(cur != null) {if(cur.key == key) {cur.val = val;return;}cur = cur.next;}//沒有return就進行頭插,底層是尾插node.next = array[index];array[index] = node;this.usedSize++;//檢查負載因子if(loadFactor() >= DEFAULT_LOAD_FACTOR) {reSize();}}private double loadFactor() {return this.usedSize * 1.0 / array.length;}//擴容private void reSize() {//申請一個兩倍大小的數組Node[] newArray = new Node[2 * array.length];//重新哈希for (int i = 0; i < array.length; i++) {Node cur = array[i];while(cur != null) {//找每個下標中哈希桶里的每個結點重新哈希后的下標int index = cur.key % newArray.length;Node curNext = cur.next;//注意先保存cur.next = newArray[index];newArray[index] = cur;cur = cur.next;}}array = newArray;}//根據key獲取valpublic int get(int key) {int index = key % array.length;Node cur = array[index];while(cur != null) {if(cur.key == key) {return cur.val;}cur = cur.next;}return -1;} }

?說明:以上的代碼只是簡單的實現了兩個重要的函數:插數據和取數據

并且只是簡單的實現,底層的樹化并沒有實現。

問題--》

問題一:以上代碼的key是整形,所以找地址的時候,可以直接用 key % array.length,如果我的key是一個引用類型呢???,我怎么找地址???

下面這段代碼,兩者的 id 都一樣,運行結果卻不一樣,這就和我們剛剛的相同的key發生沖突就不一致了。

class Person {public String id;public Person(String id) {this.id = id;}@Overridepublic String toString() {return "Person{" +"id=" + id +'}';} } public class Test {public static void main(String[] args) {Person person1 = new Person("10101");Person person2 = new Person("10101");System.out.println(person1.hashCode());System.out.println(person2.hashCode());} }

正確的處理方法:重寫hashCode()方法

class Person {public String id;public Person(String id) {this.id = id;}@Overridepublic String toString() {return "Person{" +"id=" + id +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return id == person.id;}@Overridepublic int hashCode() {return Objects.hash(id);} } public class Test {public static void main(String[] args) {Person person1 = new Person("10101");Person person2 = new Person("10101");System.out.println(person1.hashCode());System.out.println(person2.hashCode());} }

1.為什么引用類型就要談到 hashCode() ??

因為如果key是引用類型,就不能通過模上數組的長度來尋址了。而 hashCode() 作用就是返回對象的哈希代碼值,簡單來說,他就是一個整數

2.按道理來說,學號相同的兩個對象應該是同一個人,為什么重寫 hashCode(),返回對象的哈希代碼值才會一樣,不重寫為什么會導致最終在數組中尋找的地址不相同??

因為底層的hashCode()是Object類的方法,底層是由C/C++代碼寫的,我們是看不到,但是因為它是根據對象的存儲位置來返回的哈希代碼值,這里就可以解釋了,person1和person2本質上就是兩個不同的對象,在內存中存儲的地址也不同,所以最終返回的哈希代碼值必然是不相同的,哈希代碼值不同,那么在數組中根據 hash % array.length 尋找的地址也就不相同。而重寫 hashCode() 方法之后,咱們根據 Person 中的成員變量 id 來返回對應的哈希代碼值,這就相當于當一個對象,多次調用,那么返回的哈希代碼值就必然相同。

?所以我們的哈希表的實現就可以相應的改寫成這樣:

public class HashBuck<K,V> {static class Node<K,V> {public K key;public V val;public Node<K,V> next;public Node(K key,V val) {this.key = key;this.val = val;}}//往期泛型博客有具體講到數組為什么這樣寫public Node<K,V>[] array = (Node<K,V>[]) new Node[10];public int usedSize;public static final double DEFAULT_LOAD_FACTOR = 0.75;public void put(K key, V val) {Node<K,V> node = new Node<>(key,val);int hash = key.hashCode();int index = hash % array.length;Node<K,V> cur = array[index];while(cur != null) {if(cur.key.equals(key)) {cur.val = val;return;}cur = cur.next;}//頭插node.next = array[index];array[index] = node;this.usedSize++;if(loadFactor() >= DEFAULT_LOAD_FACTOR) {reSize();}}private double loadFactor() {return this.usedSize * 1.0 / array.length;}private void reSize() {Node<K,V>[] newArray = (Node<K, V>[]) new Node[2 * array.length];for (int i = 0; i < array.length; i++) {Node<K,V> cur = array[i];while (cur != null) {Node<K,V> curNext = cur.next;int hash = cur.key.hashCode();int index = hash % newArray.length;cur.next = newArray[index];newArray[index] = cur;cur = cur.next;}}array = newArray;}public V get(K key) {int hash = key.hashCode();int index = hash % array.length;Node<K,V> cur = array[index];while(cur != null) {if(cur.key == key) {return cur.val;}cur = cur.next;}return null;} } 性能分析 雖然哈希表一直在和沖突做斗爭,但在實際使用過程中,我們認為哈希表的沖突率是不高的,沖突個數是可控的,也就是每個桶中的鏈表的長度是一個常數,所以,通常意義下,我們認為哈希表的插入 / 刪除 / 查找時間復雜度是 O(1)

面試問題一:hashCode()和equals() 在HashMap中的作用分別是什么???

hashCode():用來找元素在數組中的位置;

equals():用來比較數組下鏈表中的每個元素的 key 與我的 key 是否相同。

equals也一樣,如果不重寫,上面的person1和person2的比較結果必然是不相同。

hashCode()和equals()就好比查字典,比如要查美麗,肯定要先查美字在多少頁--hashCode(),然后它的組詞有美景,美女,美麗,equals()就能找到美麗。

面試問題二:如果hashCode一樣,那么equals一定一樣嗎? 如果equals一樣,hashCode一定一樣嗎??

答案肯定是不一定,一定。

同一個地址下鏈表中的key不一定一樣,就好比數組長度為10,4和14找到的都是4下標。

而equals一樣,hashCode就一定一樣,4和4肯定都在4下標。

所以這時候再回過頭來看HashMap數據的打印時,就能明白HashMap和HashSet為什么無序了,它本身就不是一個順序結構,,

?至于TreeMap和TreeSet為啥有序,這就和我們之前學過的優先級隊列是一個道理了。(整形的key,輸出時,自然而然就排好序了,如果key是引用類型,則需要實現Comparable接口,或者傳比較器)


4.哈希表部分底層源碼的分析

哈希表底層部分成員屬性的分析:?

面試問題:以下兩個桶的數組容量分別是多大?

HashMap<String,Integer> map = new HashMap<>(19); //桶1HashMap<String,Integer> map = new HashMap<>(); //桶2

剛剛我們分析了成員屬性和成員方法,桶的只是定義了,并沒有看見給桶開辟大小??那我們如何put 進去元素呢?

首先可以確定的是桶 2 的大小為 0,至于為什么沒開辟空間也可以 put 元素,我們就需要分析底層的 put 函數,接下來我們帶著疑惑繼續分析源碼,,

??結論:

1.桶2的默認大小是0,但是在put進去第一個元素時,它的容量就擴容為了16.

2.我們可以看到底層尋址的方式不是 hash?% array.length,而是 (n-1) & hash,因為?JDK規定數組的長度必須是 2 的某個次冪。因為當 n 是 2 的某個次冪時,hash % array.length 與(n-1) & hash 得到的值是一樣的,并且位運算的效率高。所以桶1的容量就不是19,而是2的某個次冪向上取整,所以桶1大小為32,我們可以繼續看帶一個參數的構造方法的源碼:


本期到此結束,謝謝觀看!!!

總結

以上是生活随笔為你收集整理的Map和Set,简单模拟实现哈希表以及哈希表部分底层源码的分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

玖玖在线观看视频 | 顶级bbw搡bbbb搡bbbb | 亚洲精品乱码久久久久久按摩 | 一区二区三区播放 | 黄色字幕网 | 黄色大全视频 | 欧美一区二区三区免费看 | 五月天婷婷在线视频 | 国产精品成人免费一区久久羞羞 | 91人人射 | www色com| 日韩在线观看中文字幕 | 天天操天天能 | 亚洲美女精品视频 | 中文字幕日韩有码 | 国语精品视频 | 国产成人av一区二区三区在线观看 | 麻豆一区二区 | 国产小视频在线观看 | 欧美日韩激情视频8区 | 欧美性生活一级片 | 99视频精品在线 | 狠狠久久 | 在线观看亚洲国产 | 999国内精品永久免费视频 | 日韩资源在线播放 | 最近最新中文字幕 | 97超碰人人 | 97在线观看免费观看 | 久久官网 | 天天舔夜夜操 | 久久久久一区二区三区四区 | 成人h动漫精品一区二 | 日韩欧美极品 | 久久精品电影院 | 成人午夜电影网 | 久久色视频 | 日韩av免费观看网站 | 蜜桃视频日本 | 国产精品国产亚洲精品看不卡15 | 国产精品国产三级国产不产一地 | 久久av网址 | 欧美成人亚洲 | 天天亚洲 | 国产啊v在线| 91精品国产一区 | 亚洲综合激情 | 日批在线观看 | 欧美另类69 | 国产精品久久久久婷婷 | 亚洲最新av | 国产精品久久久久国产a级 激情综合中文娱乐网 | 国产免费不卡av | 国产亚洲精品久久久久久网站 | 精品国产乱码久久久久 | 日韩av在线一区二区 | 在线99| 91成人精品一区在线播放69 | 午夜性生活 | 在线91av | 中文字幕av一区二区三区四区 | 久久成人国产 | 一区 二区 精品 | 91精品国产成人观看 | 午夜久久久久久久久久影院 | 久久 亚洲视频 | www亚洲一区| 一本大道久久精品懂色aⅴ 五月婷社区 | 亚洲国产小视频在线观看 | av在线8 | 天天爽天天爽夜夜爽 | 伊人天天综合 | 九色视频网 | www.五月激情.com| 免费电影一区二区三区 | 在线观看免费av网 | 国产精品永久久久久久久久久 | 成人午夜性影院 | 欧美日韩在线播放 | 亚洲少妇激情 | 一区二区三区四区久久 | 中文字幕日韩有码 | 久草在线视频在线 | 天天干天天做天天操 | 香蕉视频在线播放 | 99riav1国产精品视频 | 天天操综合 | 国产精品久久久久久久久久东京 | 99热国产在线中文 | 五月婷婷在线观看 | 国产精品大片在线观看 | 成人午夜免费剧场 | 国产综合激情 | 日韩av在线高清 | 探花在线观看 | 久久影院一区 | 免费日韩 精品中文字幕视频在线 | 中文字幕在线观看免费高清电影 | 亚洲国产偷 | 欧美夫妻生活视频 | 亚洲伦理一区 | 中文在线a在线 | 丁香六月伊人 | 国产99视频在线观看 | 国产成人免费 | 精品国偷自产在线 | 亚洲免费视频观看 | 亚洲区另类春色综合小说校园片 | 欧美激情视频免费看 | 国产区精品区 | 免费观看一级一片 | 久久成人麻豆午夜电影 | 国产精品黑丝在线观看 | 激情小说久久 | 精品一区 在线 | 国产成人精品一区二区三区免费 | 久久久视频在线 | 中文区中文字幕免费看 | 国产精品成人一区二区 | www.黄色在线| 奇米影视777四色米奇影院 | 久久超碰免费 | 91在线视频观看 | 六月激情丁香 | 国产中文字幕免费 | 国产精品免费久久久久影院仙踪林 | 在线免费黄色片 | 久久精品伊人 | 欧美日韩国产一区二区在线观看 | 久久久久久久久久亚洲精品 | 亚洲日韩中文字幕在线播放 | 99精品视频在线 | 成人一级片视频 | 91手机视频| 在线观看亚洲视频 | 久久久免费视频播放 | 中文字幕在线观看一区二区三区 | 成人h视频在线播放 | 在线观看亚洲国产 | 91精品国产自产在线观看永久 | 国产99久久99热这里精品5 | 成人免费在线看片 | 久久高清国产 | 在线不卡a | 97超碰资源总站 | 亚洲免费在线播放视频 | 国产专区在线视频 | 久久精品欧美 | 久久夜视频 | 日本丶国产丶欧美色综合 | 久久伊人91 | 国产理论片在线观看 | 麻豆国产在线视频 | 成人免费网视频 | 久久久久久国产精品亚洲78 | 国产又黄又爽又猛视频日本 | 国产区在线视频 | 激情欧美一区二区免费视频 | 欧美黑人xxxx猛性大交 | 日本中文一区二区 | 国产va精品免费观看 | www免费视频com━ | 在线观看成人 | 国产精品久久久久久久久免费 | 五月婷婷中文 | 日本中文乱码卡一卡二新区 | 天天色综合1 | 黄色成人av在线 | 黄a在线观看 | 中文字幕在线国产精品 | 99精品视频在线观看播放 | 最近中文字幕在线中文高清版 | 99福利影院| 国产 字幕 制服 中文 在线 | 一区二区三区免费 | 亚洲欧美在线综合 | 九九热1| 欧美一级久久 | 香蕉视频在线视频 | 欧美日韩免费一区二区三区 | 欧美激情精品久久 | 福利视频一区二区 | 国内久久精品 | 精品久久久久久久久久久久久 | 婷婷天天色 | 国产高清在线不卡 | 久久久久久久久久久久久国产精品 | 国产一区二区免费 | 91视频在线免费 | 亚洲国产激情 | 亚洲人在线视频 | 国产成人免费av电影 | 欧美激情在线看 | 天天色.com| 国产精品不卡在线播放 | av超碰在线| 免费在线观看av网站 | 精品美女在线视频 | 成人午夜电影网 | 国产成人高清在线 | 免费男女网站 | 免费激情在线电影 | 五月天天色| 中文字幕一区二区三区在线视频 | 97日日| 黄色一级大片在线免费看产 | 久久99精品久久久久久三级 | 美女视频国产 | 免费av网站在线 | 8x成人在线| 在线观看日韩中文字幕 | 久久人人97超碰国产公开结果 | 免费91在线观看 | 久久精品电影 | 超碰av在线免费观看 | 中文字幕免费高清av | 欧美美女视频在线观看 | 日韩专区在线播放 | 91精品啪在线观看国产线免费 | 超碰在线公开 | 久久看片 | 久久国产免费看 | 亚洲午夜久久久影院 | 欧洲精品久久久久毛片完整版 | 911免费视频| 欧美日韩在线视频一区二区 | 久久综合九色综合网站 | 伊人狠狠 | 精品国产视频在线 | 国产精品网红直播 | 一级欧美一级日韩 | 国产亚洲精品v | 免费观看91 | 国产成人一区二区三区在线观看 | 国产视频网站在线观看 | 麻花豆传媒mv在线观看 | 久久不射电影院 | 天天爱天天草 | 国产原创中文在线 | 日本黄色免费在线观看 | 婷婷射五月| 久久久www | 久久国产精品免费视频 | 在线免费观看欧美日韩 | 日日精品 | 一区二区三区日韩在线 | 91精选在线观看 | 国产精品99页 | 麻豆国产在线视频 | 特黄特黄的视频 | 亚洲午夜久久久影院 | 精品国产乱码久久久久久三级人 | 国产一区免费在线观看 | 福利一区视频 | 精品网站999www | 精品91久久久久 | 天天摸天天操天天舔 | av在线不卡观看 | 欧美日韩高清免费 | 91爱爱中文字幕 | 国产精品美女999 | 国产婷婷色 | 久草网视频在线观看 | 国产99久久九九精品免费 | 午夜精品一区二区三区在线观看 | 久草在线欧美 | 国产美女精品久久久 | 欧美日韩在线播放 | 天天干人人 | 黄色的视频网站 | 免费黄色在线网址 | 一区二区三区www | 免费观看视频的网站 | 91高清免费在线观看 | 日日操夜 | 中文字幕乱视频 | 亚洲电影图片小说 | 免费91麻豆精品国产自产在线观看 | 成年人免费电影 | 91麻豆操 | 在线观看视频你懂得 | 欧美巨乳网 | 99视频在线精品国自产拍免费观看 | 久久视频6 | 亚洲综合视频在线播放 | 激情综合色图 | 久久免费视频6 | 91精品视频免费看 | 午夜视频播放 | 欧美精品在线观看 | av网站手机在线观看 | 日韩视频在线观看视频 | 中文字幕亚洲高清 | a久久免费视频 | 精品毛片久久久久久 | 欧美一区二视频在线免费观看 | 贫乳av女优大全 | 欧美aaaxxxx做受视频 | 色婷丁香 | 免费视频黄 | 伊人狠狠色 | 亚洲国产视频a | 欧美a级在线免费观看 | 精品高清视频 | 成人黄在线 | 九九久久视频 | 国产一区二区三区 在线 | 国产日韩一区在线 | 91av欧美| 粉嫩av一区二区三区四区五区 | 91九色porny在线 | 91一区啪爱嗯打偷拍欧美 | 欧美成人影音 | 丝袜美腿一区 | .国产精品成人自产拍在线观看6 | 亚洲国产精品日韩 | www.天天干| 国产视频中文字幕在线观看 | 免费看的视频 | 欧美激情视频一区二区三区免费 | 免费成视频 | 亚洲v欧美v国产v在线观看 | 久热免费在线 | 91精选在线观看 | 久久黄色网址 | 国产91精品一区二区麻豆网站 | 黄色大全视频 | 日本精品一二区 | 香蕉看片 | 91精品久久久久 | 成人免费xxxxxx视频 | 久久综合狠狠综合久久狠狠色综合 | 午夜久久福利视频 | 欧美色888| 亚洲精品xxx | 成年人在线免费视频观看 | 97超碰国产精品女人人人爽 | 公与妇乱理三级xxx 在线观看视频在线观看 | 玖玖精品视频 | 国产精品6999成人免费视频 | 欧美日本中文字幕 | 69精品久久 | 97手机电影网 | 少妇bbw搡bbbb搡bbbb | 91亚洲成人 | 国产精品18久久久久白浆 | 久久99久| 99久久久国产精品 | 伊人久久av | 激情丁香久久 | 日韩在线观看免费 | 五月婷婷色播 | 中文字幕在线观看不卡 | 在线影视 一区 二区 三区 | 欧美精品国产综合久久 | 国产精品一区二区免费看 | 五月婷在线观看 | 国产超碰在线观看 | 毛片网站免费在线观看 | 日韩久久一区 | 国产精品麻豆99久久久久久 | 亚洲久草在线视频 | 日本性xxx | 91色视频 | 亚洲天堂网视频在线观看 | 精品999在线观看 | 99国产精品久久久久久久久久 | 日韩中字在线观看 | 久草干| 色88久久| 99热最新 | 一区二区日韩av | 黄色a视频| 久久伊人五月天 | 午夜免费福利片 | 国产精品1000| 国产黄色片在线 | 欧美在线观看视频一区二区三区 | 手机在线视频福利 | 国产在线视频一区二区三区 | 久久久99精品免费观看app | 黄色avwww| 黄色影院在线播放 | 成人亚洲免费 | 久久久综合 | 成人h视频在线播放 | 久久国产露脸精品国产 | 欧美在线久久 | 综合久久网站 | 亚洲黄色在线免费观看 | 国产又粗又猛又爽又黄的视频先 | 亚洲五月六月 | av在线com| 丁香在线观看完整电影视频 | 久久黄网站 | 一区二区不卡视频在线观看 | www.久久免费视频 | 日韩精品专区 | 国内精品视频在线 | 国产破处视频在线播放 | 特级黄色一级 | 精品亚洲在线 | 精品自拍sae8—视频 | 成人四虎影院 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 成年人在线视频观看 | 国语精品免费视频 | 精品国产一区在线观看 | 亚洲美女视频在线 | 男女免费av| 日韩精品免费一区二区三区 | 久久不卡视频 | 制服丝袜一区二区 | www五月天婷婷 | 亚洲视频电影在线 | 亚洲精品五月天 | 久久久久免费电影 | 伊人一级 | www..com毛片 | 天天射天天干天天 | 99精品视频免费 | 久久九九精品久久 | 中文av影院 | 黄色毛片视频免费 | 欧美日韩性生活 | 欧美久久久久久久久 | 欧美一级黄色网 | 91成人网在线观看 | 人人狠狠综合久久亚洲婷 | 亚洲区另类春色综合小说校园片 | 免费视频久久 | www.少妇 | 久久精品视频99 | 久久久久久久久久久免费视频 | 九九九在线 | 国内成人av | 久久tv视频| 尤物一区二区三区 | 激情电影在线观看 | 日韩亚洲欧美中文字幕 | 国产九色视频在线观看 | 四虎免费在线观看视频 | 久久经典国产 | 欧美一区二区三区在线播放 | 色视频网站在线观看一=区 a视频免费在线观看 | 欧美福利网址 | 最近中文字幕免费大全 | 国产色秀视频 | 91精品国产麻豆国产自产影视 | 国产成人三级在线 | 亚洲人人射| 婷婷丁香色 | 日韩精品久久久久久 | 国产69精品久久久久99 | 99re6热在线精品视频 | 欧美a免费 | 美女视频黄色免费 | 九九99视频 | 久久久久久久99 | www.夜夜爱 | 国产1区2| www.色午夜.com | 奇米影视777影音先锋 | 91久草视频 | 高清国产在线一区 | www.人人草 | 天天干天天射天天插 | 最新久久免费视频 | 久草在线手机视频 | 精品久久久久久综合日本 | 超碰97人人爱 | 日本久久综合视频 | 最近中文字幕高清字幕免费mv | 97国产大学生情侣白嫩酒店 | 亚洲色图av | 国产不卡精品视频 | 黄色a视频 | 亚州av一区 | 91精品啪在线观看国产 | 五月天天色 | 日本精品久久久久中文字幕 | 国产精品久久久久av福利动漫 | 国产日韩视频在线 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 特级毛片aaa| 亚洲六月丁香色婷婷综合久久 | 免费视频xnxx com | 日日操日日 | 91精品对白一区国产伦 | 国产精品福利无圣光在线一区 | 欧美午夜a | 日本久久免费电影 | 在线免费黄色片 | 啪啪凸凸 | 免费高清影视 | 久久dvd | 五月开心激情 | 99爱视频 | 狠狠色丁香婷婷综合久久片 | 婷婷六月天在线 | 久久成 | 婷婷六月综合亚洲 | 91九色精品女同系列 | 色视频在线| 久草网视频在线观看 | 欧美狠狠操 | 婷婷网在线| 色av资源网 | 午夜精品一区二区国产 | 免费a网 | 久av电影| 一区二区三区中文字幕在线观看 | 久久久久久久久免费视频 | 亚洲精品麻豆 | 99精品在线观看视频 | 午夜私人影院久久久久 | 午夜精品久久久久久久99热影院 | 午夜精品一区二区三区免费视频 | 99久在线精品99re8热视频 | 国产伦理久久精品久久久久_ | av在线成人 | 热久久免费视频精品 | 天天干天天玩天天操 | 色哟哟国产精品 | 2023天天干 | 一区电影| 97在线观看免费高清完整版在线观看 | 久久视频这里有久久精品视频11 | a级国产片 | 日韩欧美高清视频在线观看 | 婷婷丁香花五月天 | 国产探花视频在线播放 | 久久y| 国产精品一二 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 国产精品www | 精品产品国产在线不卡 | 国产黄a三级三级 | 91完整版在线观看 | 久久久免费精品 | 丁香久久激情 | 麻豆视频免费在线 | 久久国产综合视频 | 高清日韩一区二区 | 这里只有精品视频在线 | 九九久 | 国产午夜小视频 | 最新av在线播放 | 亚洲区另类春色综合小说校园片 | 超碰97在线人人 | 国产一级高清视频 | 日韩在线观看视频中文字幕 | 国产精品一区二区免费视频 | 免费看黄色小说的网站 | 亚洲视频精选 | 99久久婷婷国产一区二区三区 | 香蕉在线播放 | 久久精品美女 | 中文字幕在线观看免费观看 | 国产精品激情在线观看 | 丁香综合av | 日日爽 | 蜜臀av夜夜澡人人爽人人 | 天天操综合网站 | 国产黄av| 久久avav| 日韩免费在线网站 | 亚洲精品一区二区精华 | 亚洲免费一级 | 91精品国产三级a在线观看 | av久久在线 | 久久久高清免费视频 | 五月婷婷中文网 | 久久国产精品99国产精 | 精品久久电影 | 天天综合网 天天综合色 | 国产999精品| 亚洲国产精品500在线观看 | 在线观看一区二区精品 | 色欧美视频 | av一级片在线观看 | 成人免费观看视频大全 | av+在线播放在线播放 | 色橹橹欧美在线观看视频高清 | 91x色| 免费a级毛片在线看 | 涩涩爱夜夜爱 | 国产福利精品一区二区 | 国产亚洲精品久久19p | 国产精品毛片 | 三级黄色网址 | 亚洲国产无 | 日韩中文字幕在线不卡 | 综合色播 | 久久er99热精品一区二区三区 | 99热国产在线观看 | 狠狠色丁香婷婷综合久小说久 | 香蕉视频18 | 欧美日韩在线免费视频 | 亚洲精品av在线 | 免费三级黄色片 | 成人国产精品电影 | 91亚洲视频在线观看 | 日本精品一区二区三区在线观看 | 国产午夜剧场 | 日韩大陆欧美高清视频区 | a黄色一级片| 色亚洲网 | 色婷婷中文 | 手机看片国产日韩 | 国际精品久久久 | 日韩av在线一区二区 | 99在线观看精品 | 欧美一区二区免费在线观看 | 免费日韩一区 | 欧美综合国产 | 91久久久久久久一区二区 | 中文字幕一区二区三区乱码不卡 | 久久a热6| 中文字幕乱码电影 | 久草国产在线观看 | 亚洲一区天堂 | 国产91影院 | 在线亚洲欧美视频 | 天堂av影院 | 蜜臀av在线一区二区三区 | 99精品区 | 五月天天色 | 免费一级特黄录像 | 综合色中色 | 国产日产欧美在线观看 | 国产精品永久在线观看 | 草在线 | 麻豆影音先锋 | 西西444www大胆无视频 | 99国内精品久久久久久久 | 最近更新好看的中文字幕 | 日韩一级片观看 | 欧美成人在线网站 | 亚洲伦理电影在线 | 97超碰人人澡 | 亚洲国产中文字幕 | 香蕉国产91| 久久亚洲综合国产精品99麻豆的功能介绍 | 日韩综合在线观看 | 亚洲欧洲中文日韩久久av乱码 | 久久精品免费电影 | 国产午夜小视频 | 国产精品入口a级 | 国产精品久久av | 天天操天天怕 | 日韩免 | 亚洲理论影院 | 久久久久久久久毛片精品 | 黄色网大全| 亚洲精品九九 | 久久久影院| 国产日产精品一区二区三区四区的观看方式 | 日韩黄色大片在线观看 | 九九九在线 | 99精品国产99久久久久久97 | 天天综合网 天天综合色 | 国产免费一区二区三区网站免费 | 亚洲a在线观看 | 久久夜靖品 | 在线不卡的av | 免费视频在线观看网站 | 最新高清无码专区 | 伊人网av| 亚洲欧美激情插 | 国产一级淫片免费看 | 91亚洲网站 | 日韩久久精品 | 中文字幕在线观看av | 天天操天天操天天爽 | 黄色软件视频大全免费下载 | 一区二区电影网 | 久久精品九色 | 玖玖视频 | 天堂av在线中文在线 | 91手机在线看片 | 青青河边草观看完整版高清 | 欧美色久 | 亚洲精品视频免费在线观看 | 欧美精品天堂 | 久久撸在线视频 | 欧美成人精品xxx | 婷婷色在线播放 | 大胆欧美gogo免费视频一二区 | 亚洲午夜精品一区二区三区电影院 | 国内精品二区 | 午夜视频99 | 久久久久99999 | 一区二区不卡在线观看 | 美女黄频在线观看 | 久久综合视频网 | 国产精品网在线观看 | 久草青青在线观看 | av黄色av| 91av视频在线免费观看 | 久草干| 九色在线视频 | 亚洲精品456在线播放 | 97av影院| 国产91在线观看 | 91精品国产福利在线观看 | 天天色天天爱天天射综合 | 亚洲男男gaygay无套 | 夜夜夜影院 | 99久久99久久精品国产片果冰 | 久久精品一二三区白丝高潮 | 91综合色| 免费日韩一区二区三区 | 亚洲精品乱码久久久久久蜜桃91 | 久久综合九色综合欧美就去吻 | 午夜精品久久久久久中宇69 | 亚洲黄色在线观看 | 日韩免费三区 | 五月天综合婷婷 | 91视频久久久 | 久久a v视频 | 亚洲国产日韩欧美 | 亚洲人人网 | 成人国产精品久久久久久亚洲 | 日韩专区在线播放 | 热热热热热色 | 一区二区视频在线观看免费 | 中文字幕在线第一页 | 中文字幕av日韩 | 视频成人永久免费视频 | 天天夜夜操 | 在线高清一区 | 久久精品黄 | 久久久久久久久久免费 | 在线91精品| 日韩精品一区二区三区不卡 | 国产精品精品国产 | 韩日av一区二区 | 欧美色综合 | 国产视频2 | 深夜免费小视频 | 欧美男男tv网站 | 奇米网444| 久久一视频 | av大片免费看 | 天天操天天干天天 | 久久免费在线观看视频 | 91激情小视频 | 一区二区三区在线观看免费视频 | 亚洲欧美国产精品久久久久 | 国产亚洲日 | 国产伦理剧 | 99视频国产精品 | 在线观看www91 | 免费观看mv大片高清 | 中文字幕第一页在线视频 | 天天干 夜夜操 | 国产又黄又硬又爽 | 亚洲精品日韩av | 中国一级片在线播放 | 免费在线电影网址大全 | 亚洲日韩欧美一区二区在线 | 99亚洲国产 | 日韩免费 | 亚洲影视九九影院在线观看 | 久久久久网址 | 九九一级片 | 日韩黄视频 | 久av电影 | 96视频在线| wwwwwww色| 黄色特级毛片 | 99热这里只有精品久久 | 黄色大全免费网站 | 天天爱天天操天天爽 | 免费久久99精品国产婷婷六月 | av一级片 | 一区免费视频 | 久久 一区| 午夜久久影视 | 精品免费久久久久 | 五月开心激情网 | 探花视频在线观看+在线播放 | 激情五月婷婷综合网 | 91精品成人 | 欧美成a人片在线观看久 | 中文字幕 国产 一区 | 不卡日韩av | 国产精品久久久区三区天天噜 | 日韩高清在线一区二区 | 国语精品视频 | 久草观看视频 | 色中色亚洲 | 色综合久久中文综合久久牛 | 久久永久免费视频 | 国产精品久久在线观看 | 揉bbb玩bbb少妇bbb | 欧美午夜久久久 | 爱爱av网 | 91大神dom调教在线观看 | 欧美动漫一区二区三区 | 中文字幕日本在线观看 | 91成人免费看片 | 午夜精品一区二区三区在线观看 | 亚洲在线看 | 亚洲一级免费观看 | 五月婷婷中文网 | 国产一区二区成人 | 夜添久久精品亚洲国产精品 | 久久艹综合 | 成人动漫视频在线 | 久一网站| 狠狠色婷婷丁香六月 | 看av免费 | 在线免费91 | 少妇bbb好爽 | 国产精品一区二区三区久久 | 国产手机视频精品 | 国产在线观看91 | 久久久久亚洲a | 99视频在线精品 | 免费黄色一区 | 久久久久国产一区二区三区四区 | 国产精品成人自产拍在线观看 | 日韩偷拍精品 | 麻豆传媒在线免费看 | 91久久精品一区 | 五月婷色 | 亚洲国产成人精品久久 | 中文字幕在线观看免费观看 | 国产精品久久在线观看 | 精品久久国产一区 | 日韩在线观看小视频 | 99电影456麻豆 | 欧美性视频网站 | 在线观看一区 | 在线免费观看视频一区二区三区 | 综合久久综合久久 | 91精品毛片| 天天久久综合 | 国产成人亚洲在线观看 | 天天夜夜亚洲 | 91成人天堂久久成人 | 99精品在线看 | 精品久久久久久综合日本 | 国产精品福利午夜在线观看 | 国产免费中文字幕 | 亚洲视频99 | 91成人在线网站 | 成年人视频在线 | 久久av一区二区三区亚洲 | 香蕉视频最新网址 | 免费黄色看片 | 日韩欧美一区二区在线 | 国产高清在线a视频大全 | 亚洲 av网站| 国产清纯在线 | 91九色在线观看 | 一区二区三区动漫 | 国产美女网站视频 | 精品久久福利 | 免费在线黄色av | 91久久国产综合精品女同国语 | 伊人婷婷 | 国产精品9999| 91精品国自产在线观看 | 看国产黄色大片 | 色综合天天天天做夜夜夜夜做 | 狠狠做深爱婷婷综合一区 | 一区二区不卡在线观看 | 欧美一级片在线 | 久久刺激视频 | 色a综合| 日韩欧美在线免费 | 精品播放 | 午夜久久福利视频 | 国产免费亚洲 | 丝袜av网站 | 天天色官网| 欧美污污视频 | 国产最新91 | 国产精品一区二区在线观看免费 | 国产麻豆传媒 | 久草在线视频免费资源观看 | 人人藻人人澡人人爽 | 中文字幕在线网址 | aaa日本高清在线播放免费观看 | 久久只有精品 | 青青草在久久免费久久免费 | 亚洲精品五月 | 日p在线观看 | 91麻豆精品一区二区三区 | 国产视频久久久 | 伊人手机在线 | 综合久久五月天 | 在线99热 | 久久九九影视网 | 黄色软件网站在线观看 | 久久9视频 | 一区久久久 | 五月天久久久 | 91精品一区国产高清在线gif | 国产精品一区免费观看 | 免费福利视频网 | 国产爽妇网 | 手机av在线免费观看 | 色噜噜在线观看 | 91视频免费观看 | 天天干天天综合 | 国产福利午夜 | 国产成人精品av久久 | 麻豆久久一区二区 | 天天综合网天天综合色 | 一二三区高清 | 婷婷色在线观看 | 中文字幕在线有码 | 国产日韩欧美网站 | 99久久精品国 | 在线免费观看视频你懂的 | av线上免费观看 | 亚洲一级特黄 | 99色精品视频 | 激情久久综合 | 国产精品毛片网 | 久久av一区二区三区亚洲 | 午夜av免费在线观看 | 亚洲天天做 | 日韩久久精品 | 国产精品手机在线观看 | 久青草视频在线观看 | 国产精品99久久久久 | 99久久婷婷国产一区二区三区 | 成年人在线视频观看 | 手机av看片 | 国产色视频123区 | 黄色免费看片网站 | 久久国产品 | 成年美女黄网站色大片免费看 | av字幕在线| 日本黄色免费播放 | 中文字幕免费观看全部电影 | 国语对白少妇爽91 | av中文字幕电影 | 中文永久字幕 | 成人av一级片| 成人午夜电影在线播放 | 国内小视频在线观看 | 久久伊人国产精品 | 国产黄色片免费 | 亚洲精品国产精品国自产观看浪潮 | 日韩免费中文字幕 | 国产午夜在线观看 | 国产精品爽爽久久久久久蜜臀 | 日韩欧美视频免费观看 | 国产精品久久久久久久久久久久午 | 五月婷婷毛片 | 黄色99视频 | www.伊人色.com | 久久精品日产第一区二区三区乱码 | 男女精品久久 | 久久午夜国产 | 精品国产一区二区三区在线 | 欧美日韩视频在线观看一区二区 | 久久久国产精品人人片99精片欧美一 | 婷婷综合网 | 日韩欧美一区二区三区在线 | 久久久久国产a免费观看rela | 97在线观看免费高清 | 首页国产精品 | 69久久久久久久 | 91视频免费看 | 在线播放 日韩专区 | 在线播放视频一区 | 国产成人精品一区二区三区在线观看 | 五月婷婷亚洲 | 欧美日韩伦理一区 | 精品一区二区视频 | 欧美日韩国内在线 | 久草在线视频国产 | 中文字幕一区二区三区在线播放 | 国产一区二区精品久久91 | 懂色av懂色av粉嫩av分享吧 | 制服丝袜一区二区 | 久久中文视频 | 91在线中文 | 亚洲综合涩 | 亚洲1级片| av理论电影 | 狠狠色丁香婷婷综合久久片 | 五月天久久精品 | 一色屋精品视频在线观看 | 日日成人网 | 国产91精品高清一区二区三区 | 亚洲视频大全 | 欧美精品乱码久久久久 | 99久久婷婷国产综合精品 | 91精彩在线视频 | 黄污网站在线 |