久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础知识——集合类

發(fā)布時(shí)間:2024/1/18 java 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础知识——集合类 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

工具類:Collection和Map,兩者是同一級(jí)別的

知識(shí)點(diǎn):
expectedModCount
ArrayList:懶加載,transient,System.arraycopy()
LinkedList:雙向鏈表
Vector:鎖機(jī)制
Stack:繼承Vector,
知識(shí)點(diǎn):
初始化:tableForSize
put:計(jì)算hash/如何轉(zhuǎn)樹擴(kuò)容
擴(kuò)容:如何定位
遍歷:迭代器
為什么是2
1.7/1.8d的區(qū)別
對(duì)比區(qū)別
LinkedListHashMap:結(jié)構(gòu),LRU
TreeMap:比較器,一致性哈希
Queue:隊(duì)列
Set:內(nèi)置HashMap

List

arraylist源碼閱讀:
知識(shí)點(diǎn)一:

private transient Object[] elementData;

elementData,假如現(xiàn)在實(shí)際有了5個(gè)元素,而elementData的大小可能是10,那么在序列化時(shí)只需要儲(chǔ)存5個(gè)元素,數(shù)組中的最后五個(gè)元素是沒有實(shí)際意義的,不需要儲(chǔ)存。所以ArrayList的設(shè)計(jì)者將elementData設(shè)計(jì)為transient,然后在writeObject方法中手動(dòng)將其序列化,并且只序列化了實(shí)際存儲(chǔ)的那些元素,而不是整個(gè)數(shù)組

知識(shí)點(diǎn)二:
初始化時(shí),如果指定Capacity則生成Capacity大小的數(shù)組,如果沒有指定則為空,等到添加元素的時(shí)候再擴(kuò)容,節(jié)約內(nèi)存懶加載機(jī)制?

參考資料

// 空的數(shù)組private static final Object[] EMPTY_ELEMENTDATA = {};// 默認(rèn)容量的空數(shù)組private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};

這里有兩個(gè)空數(shù)組的定義,注意到是static,final不可改變的常量。所以說我們可以推斷,當(dāng)定義很多個(gè)空的ArrayList,他們都指向這兩個(gè)數(shù)組節(jié)約內(nèi)存

知識(shí)點(diǎn)三:
所以indexOf(Object o),remove等都可以穿入null
o==null
null既不是對(duì)象也不是一種類型,它僅是一種特殊的值,你可以將其賦予任何引用類型,它還僅僅是一個(gè)特殊值,并不屬于任何類型,用instanceof永遠(yuǎn)返回false

知識(shí)點(diǎn)四:

參考資料
操作中實(shí)現(xiàn)可拓展數(shù)組,根本在于System.arraycopy()
是native方法,一般是借助C/C++實(shí)現(xiàn)的

復(fù)制方法有四種:
1、for循環(huán),手動(dòng)復(fù)制
2、System.arraycopy()方法
3、Arrays.copyOf()方法
4、clone()方法
由于System.arraycopy()是最貼近底層的,其使用的是內(nèi)存復(fù)制,省去了大量的數(shù)組尋址訪問等時(shí)間,故效率最高。
對(duì)于Arrays.copyOf()方法查看源碼可以看到:
public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
它是借助System.arraycopy()方法實(shí)現(xiàn)的,故效率次于System.arraycopy()
clone()方法效率是最低的,一般需要重寫

LinkedList源碼閱讀
知識(shí)點(diǎn)一:可以看到LinkedList基于鏈表,并且是雙向循環(huán)鏈表,每一個(gè)節(jié)點(diǎn)是一個(gè)Entry,element,next,previous,構(gòu)造方法和entry(int index) ,entry(int index) 找index位置的元素并返回。其他的操作比如add,remove都是符合雙向循環(huán)鏈表基本操作

private static class Entry<E> { E element; Entry<E> next; Entry<E> previous; Entry(E element, Entry<E> next, Entry<E> previous) {this.element = element;this.next = next;this.previous = previous; } private Entry<E> entry(int index) {if (index < 0 || index >= size)throw new IndexOutOfBoundsException("Index: "+index+ ", Size: "+size);Entry<E> e = header;// 根據(jù)這個(gè)判斷決定從哪個(gè)方向遍歷這個(gè)鏈表if (index < (size >> 1)) {for (int i = 0; i <= index; i++)e = e.next;} else {// 可以通過header節(jié)點(diǎn)向前遍歷,說明這個(gè)一個(gè)循環(huán)雙向鏈表,header的previous指向鏈表的最后一個(gè)節(jié)點(diǎn),這也驗(yàn)證了構(gòu)造方法中對(duì)于header節(jié)點(diǎn)的前后節(jié)點(diǎn)均指向自己的解釋for (int i = size; i > index; i--)e = e.previous;}return e;}}

知識(shí)點(diǎn)二“:
expectedModCount字段,
modCount,用于記錄對(duì)象的修改次數(shù),比如增、刪、改
可以理解成version,在特定的操作下需要對(duì)version進(jìn)行檢查,適用于Fail-Fast機(jī)制。
Fail-Fast 機(jī)制
比如當(dāng)A通過iterator去遍歷某集合的過程中,因?yàn)閕terator長時(shí)間擁有對(duì)象,而且是線程安全即其他線程也可以操作對(duì)象,所以為了防止便利的時(shí)候讀取臟數(shù)據(jù),通過checkForComodification()方法,判斷modCount==expectedModCount,若其他線程修改了此集合,此時(shí)會(huì)拋出ConcurrentModificationException異常。

知識(shí)點(diǎn)三:重寫clone方法,利用clone.add(e.element);

public Object clone() {LinkedList<E> clone = null;try {clone = (LinkedList<E>) super.clone();} catch (CloneNotSupportedException e) {throw new InternalError();}clone.header = new Entry<E>(null, null, null);clone.header.next = clone.header.previous = clone.header;clone.size = 0;clone.modCount = 0;for (Entry<E> e = header.next; e != header; e = e.next)clone.add(e.element);return clone; }

Iterator:

參考資料


參考資料
知識(shí)點(diǎn)一:
接口中的default方法,能夠在借口中直接寫方法體和抽象類的區(qū)別又縮小了
但是如果實(shí)現(xiàn)A,B兩個(gè)接口都有相同函數(shù)簽名的default的方法,必須重寫因?yàn)椴恢缿?yīng)該繼承哪個(gè)
如果繼承父類A,和實(shí)現(xiàn)接口B都有default方法,則會(huì)實(shí)際為父類A的方法

知識(shí)點(diǎn)二:
首先Java提供兩個(gè)迭代器接口Iterator和ListIterator
Iterator方法比較少:next,hasNext,remove
ListIterator方法比較多:add,previous等等

參考資料

AbstractList:是ArrayList和LinkedList的父類
實(shí)現(xiàn)了兩個(gè)內(nèi)部類Itr和ListItr
Itr:實(shí)現(xiàn)Iterator接口
ListItr:實(shí)現(xiàn)ListIterator并且繼承自Itr

ArrayList:直接使用AbstractList的Itr
Itr:cursor lastRet(remove時(shí)移除此元素)利用數(shù)組特性遍歷

checkForComodification(); try { Object next = get(cursor);//先取當(dāng)前光標(biāo)所在位置后面的元素 lastRet = cursor++;//然后把最后一次操作所在光標(biāo)設(shè)置成當(dāng)前光標(biāo)位置,再把當(dāng)前光標(biāo)后移一 return next; } catch (IndexOutOfBoundsException e) { checkForComodification(); throw new NoSuchElementException(); }

LinkedList:
單獨(dú)定義內(nèi)部類ListItr,它實(shí)現(xiàn)了ListIterator接口,用來對(duì)LinkedList進(jìn)行專門迭代,因?yàn)長inkedList與ArrayList還不同,它是使用鏈表結(jié)構(gòu)實(shí)現(xiàn)的,所以需專門的迭代器。
ListItr:
lastReturned:最近一次操作返回的元素
Entry next:即將返回的元素
nextIndex:即將返回的元素的編號(hào)

public Object next() { //檢查外部是否修改了集合結(jié)構(gòu),即modCount是否與expectedModCount相等 checkForComodification(); if (nextIndex == size) throw new NoSuchElementException(); lastReturned = next;//先記錄next所在位置,并把它賦給lastReturned next = next.next;//然后再把next指向下一個(gè)元素 nextIndex++;//nextIndex與next操作需同步,所以也要增一 return lastReturned.element; }

Vector
參考資料
1:底層實(shí)現(xiàn)與ArrayList類似,基于數(shù)組
2:線程安全,add,remove方法都是synchronized方法。但是其實(shí)并不是真正的意義安全,對(duì)方法加鎖實(shí)際上是沒有太大意義的。因?yàn)槿绻闵暾?qǐng)遍歷Vector,同樣需要鎖來禁止修改Vector遍歷沒加鎖而修改加鎖。注意add,remov仍然是不能同時(shí)執(zhí)行的,因?yàn)閟ynchronized非靜態(tài)方法是對(duì)對(duì)象實(shí)例加鎖,并且效率低下
3: Vector擴(kuò)容由oldCapacity 與 capacityIncrement共同決定,

int newCapacity = oldCapacity + ((capacityIncrement > 0) ?capacityIncrement : oldCapacity);

而ArrayList為

int newCapacity = (oldCapacity * 3)/2 + 1;

參考資料
stack:
public class Stack extends Vector
Vector:
public class Vector extends AbstractList implements List, RandomAccess, Cloneable, Serializable
繼承Vector 并實(shí)現(xiàn)pop,push等方法
問題一:為什么說Java的Stack類實(shí)現(xiàn)List接口是個(gè)笑話?
因?yàn)镾tack是FILO,但是LIst是RandomAccess,從設(shè)計(jì)角度上講不合理。接口的實(shí)現(xiàn),不取決于類的應(yīng)用場景,而是接口的契約的應(yīng)用場景,固然棧有些時(shí)候是需要隨機(jī)訪問,但是他本質(zhì)還是FILO
就像牙刷是用來刷牙的,但是有些時(shí)候我們的確也可以用來洗衣服
問題二:為什么stack是一個(gè)類?
因?yàn)閏ollection體系是在jdk1.2被設(shè)計(jì)出來的,而vector,stack,hashtable這些是隨java的第一個(gè)版本就發(fā)布了的。簡而言之,在最初的java版本中,提供了基本的容器實(shí)現(xiàn),但未經(jīng)良好設(shè)計(jì),因此在革命性的1.2版本中,重新設(shè)計(jì)了后來獲得廣泛好評(píng)的Collection體系

HashMap


參考資料

參考資料
前沿:首先HashMap具體實(shí)現(xiàn)是由鏈表+數(shù)組的實(shí)現(xiàn)方式,并且采用了動(dòng)態(tài)擴(kuò)容技術(shù)
數(shù)據(jù)結(jié)構(gòu):

特點(diǎn):
1:動(dòng)態(tài)擴(kuò)充
數(shù)組是否需要擴(kuò)充是通過負(fù)載因子判斷的,如果當(dāng)前元素個(gè)數(shù)為數(shù)組容量的0.75時(shí),就會(huì)擴(kuò)充數(shù)組。這個(gè)0.75就是默認(rèn)的負(fù)載因子,可由構(gòu)造傳入。我們也可以設(shè)置大于1的負(fù)載因子,這樣數(shù)組就不會(huì)擴(kuò)充,犧牲性能,節(jié)省內(nèi)存。
2:鏈表和紅黑樹轉(zhuǎn)化:
為了解決碰撞,數(shù)組中的元素是單向鏈表類型。當(dāng)1:鏈表長度到達(dá)一個(gè)閾值時(shí)(7或8)TREEIFY_THRESHOLD并且2:總數(shù)量是否到達(dá)一個(gè)閾值(64),會(huì)將鏈表轉(zhuǎn)換成紅黑樹提高性能。而當(dāng)鏈表長度縮小到另一個(gè)閾值時(shí)(6)UNTREEIFY_THRESHOLD,又會(huì)將紅黑樹轉(zhuǎn)換回單向鏈表提高性能
TreeNodes占用空間是普通Nodes的兩倍(兩個(gè)指針和一個(gè)指針)所以剛開始用Nodes節(jié)省空間,后面當(dāng)鏈表長度大泊松分布幾率小時(shí)再用紅黑樹

3:數(shù)據(jù)結(jié)構(gòu)是數(shù)組+鏈表+紅黑樹
拉鏈法進(jìn)行沖突處理

內(nèi)部類:
繼承關(guān)系如下:Node是單向鏈表節(jié)點(diǎn),Entry是雙向鏈表節(jié)點(diǎn),TreeNode是紅黑樹節(jié)點(diǎn)。
Node->Entry->TreeNode
注意Entry是JDK1.7之前的數(shù)據(jù)機(jī)構(gòu),1.8后主要是用Node和TreeNode不用Entry可能認(rèn)為雙向循環(huán)鏈表意義不大,效率不如Node

Node

static class Node<K,V> implements Map.Entry<K,V> {// hash是經(jīng)過hash()方法處理過的hashCode,為了使hashCode分布更加隨機(jī),// 待會(huì)會(huì)深入這個(gè)hash()方法。final int hash; final K key;V value;Node<K,V> next; // 下一個(gè)節(jié)點(diǎn)Node(int hash, K key, V value, Node<K,V> next) {this.hash = hash;this.key = key;this.value = value;this.next = next;}public final int hashCode() {// key的hashCode異或value的哈希Codereturn Objects.hashCode(key) ^ Objects.hashCode(value);}// 其余略}

HashMap方法:

成員變量

/*** 數(shù)組的默認(rèn)初始長度,java規(guī)定hashMap的數(shù)組長度必須是2的次方* 擴(kuò)展長度時(shí)也是當(dāng)前長度 << 1。*/ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16// 數(shù)組的最大長度 static final int MAXIMUM_CAPACITY = 1 << 30;// 默認(rèn)負(fù)載因子,當(dāng)元素個(gè)數(shù)超過這個(gè)比例則會(huì)執(zhí)行數(shù)組擴(kuò)充操作。 static final float DEFAULT_LOAD_FACTOR = 0.75f;// 樹形化閾值,當(dāng)鏈表節(jié)點(diǎn)個(gè)大于等于TREEIFY_THRESHOLD - 1時(shí), // 會(huì)將該鏈表換成紅黑樹。 static final int TREEIFY_THRESHOLD = 8;// 解除樹形化閾值,當(dāng)鏈表節(jié)點(diǎn)小于等于這個(gè)值時(shí),會(huì)將紅黑樹轉(zhuǎn)換成普通的鏈表。 static final int UNTREEIFY_THRESHOLD = 6;// 最小樹形化的容量,即:當(dāng)內(nèi)部數(shù)組長度小于64時(shí),不會(huì)將鏈表轉(zhuǎn)化成紅黑樹,而是優(yōu)先擴(kuò)充數(shù)組。 static final int MIN_TREEIFY_CAPACITY = 64;// 這個(gè)就是hashMap的內(nèi)部數(shù)組了,而Node則是鏈表節(jié)點(diǎn)對(duì)象。 transient Node<K,V>[] table;// 下面三個(gè)容器類成員,作用相同,實(shí)際類型為HashMap的內(nèi)部類KeySet、Values、EntrySet。 // 他們的作用并不是緩存所有的key或者所有的value,內(nèi)部并沒有持有任何元素。 // 而是通過他們內(nèi)部定義的方法,從三個(gè)角度(視圖)操作HashMap,更加方便的迭代。 // 關(guān)注點(diǎn)分別是鍵,值,映射。 transient Set<K> keySet; // AbstractMap的成員 transient Collection<V> values; // AbstractMap的成員 transient Set<Map.Entry<K,V>> entrySet;// 元素個(gè)數(shù),注意和內(nèi)部數(shù)組長度區(qū)分開來。 transient int size;// 再上一篇文章中說過,是容器結(jié)構(gòu)的修改次數(shù),fail-fast機(jī)制。 transient int modCount;// 閾值,超過這個(gè)值時(shí)擴(kuò)充數(shù)組。 threshold = capacity * load factor,具體看上面的靜態(tài)常量。 int threshold;// 裝在因子,具體看上面的靜態(tài)常量。 final float loadFactor;

其中,Node等為transient變量
1:有很多空的元素,不需要序列化
2:HashCode依賴于不同的虛擬機(jī),常規(guī)序列化可能導(dǎo)致錯(cuò)誤

1:構(gòu)造方法
//主要是對(duì)傳入的initialCapacity和loadFactor進(jìn)行參數(shù)檢驗(yàn),沒有為數(shù)組table分配內(nèi)存空間而是在執(zhí)行put操作的時(shí)候才真正構(gòu)建table數(shù)組

public HashMap(int initialCapacity, float loadFactor) {if (initialCapacity < 0)throw new IllegalArgumentException("Illegal initial capacity: " +initialCapacity);if (initialCapacity > MAXIMUM_CAPACITY)initialCapacity = MAXIMUM_CAPACITY;if (loadFactor <= 0 || Float.isNaN(loadFactor))throw new IllegalArgumentException("Illegal load factor: " +loadFactor);this.loadFactor = loadFactor;this.threshold = tableSizeFor(initialCapacity);    init();//init方法在HashMap中沒有實(shí)際實(shí)現(xiàn),不過在其子類如 linkedHashMap中就會(huì)有對(duì)應(yīng)實(shí)現(xiàn)}

public HashMap(int initialCapacity, float loadFactor)這個(gè)構(gòu)造可以由我們指定數(shù)組的初始容量和負(fù)載因子。
但是前面說過,數(shù)組容量必須是2的次方。所以就需要通過某個(gè)算法將我們給的數(shù)值轉(zhuǎn)換成2的次方。
tableSizeFor(int cap)就是這個(gè)作用。

// 這個(gè)方法可以將任意一個(gè)整數(shù)轉(zhuǎn)換成2的次方。
static final int tableSizeFor(int cap) {
int n = cap - 1;
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
}
0000 0100 0000 0000
0000 0110 0000 0000
0000 0111 1000 0000
0000 0111 1111 1000
0000 0111 1111 1111
0000 1000 0000 0000 可以看到變成2的次方
為什么要 int n = cap - 1?
我的理解是,因?yàn)榻o定的MAXIMUM_CAPACITY = 1 << 30,相當(dāng)于在說明文檔中說,最大值可以取1<<30。如果不減1,那么將1<<30帶入后結(jié)果為0,與要求不符,所以-1后計(jì)算。

當(dāng)然,如果未指定容量,則同樣也是懶加載機(jī)制

public HashMap() {this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted}

特點(diǎn)

2:put
檢查數(shù)組是否為空,執(zhí)行resize()擴(kuò)充;
通過hash值計(jì)算數(shù)組索引,獲取該索引位的首節(jié)點(diǎn)。
如果首節(jié)點(diǎn)為null,直接添加節(jié)點(diǎn)到該索引位。
如果首節(jié)點(diǎn)不為null,那么有3種情況
① key和首節(jié)點(diǎn)的key相同,覆蓋value;否則執(zhí)行②或③
② 如果首節(jié)點(diǎn)是紅黑樹節(jié)點(diǎn)(TreeNode),將鍵值對(duì)添加到紅黑樹。
③ 如果首節(jié)點(diǎn)是鏈表,將鍵值對(duì)添加到鏈表。添加之后會(huì)判斷鏈表長度是否到達(dá)TREEIFY_THRESHOLD - 1這個(gè)閾值,“嘗試”將鏈表轉(zhuǎn)換成紅黑樹。
最后判斷當(dāng)前元素個(gè)數(shù)是否大于threshold,擴(kuò)充數(shù)組。

public V put(K key, V value) {return putVal(hash(key), key, value, false, true); } final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) {//tab存放當(dāng)前的哈希桶,p用作臨時(shí)鏈表節(jié)點(diǎn) Node<K,V>[] tab; Node<K,V> p; int n, i;//如果當(dāng)前哈希表是空的,代表是初始化//table為Entry,tab為Node,Entry是Node的子類,上轉(zhuǎn)型對(duì)象if ((tab = table) == null || (n = tab.length) == 0)//那么直接去擴(kuò)容哈希表,并且將擴(kuò)容后的哈希桶長度賦值給nn = (tab = resize()).length;//如果當(dāng)前index的節(jié)點(diǎn)是空的,表示沒有發(fā)生哈希碰撞。直接構(gòu)建一個(gè)新節(jié)點(diǎn)Node,掛載在index處即可。if ((p = tab[i = (n - 1) & hash]) == null)tab[i] = newNode(hash, key, value, null);else {//否則 發(fā)生了哈希沖突。Node<K,V> e; K k;//如果哈希值相等,key也相等,則是覆蓋value操作if (p.hash == hash &&((k = p.key) == key || (key != null && key.equals(k))))e = p;//將當(dāng)前節(jié)點(diǎn)引用賦值給eelse if (p instance of TreeNode)//如果是紅黑樹節(jié)點(diǎn)e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value);else {//不是紅黑樹節(jié)點(diǎn)//遍歷鏈表for (int binCount = 0; ; ++binCount) {if ((e = p.next) == null) {//遍歷到尾部,,仍沒有key與其相等,說明是新節(jié)點(diǎn),追加新節(jié)點(diǎn)到尾部p.next = newNode(hash, key, value, null);//如果追加節(jié)點(diǎn)后,鏈表數(shù)量>=8,則轉(zhuǎn)化為紅黑樹if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1sttreeifyBin(tab, hash);break;}//如果找到key與其相同,說明是曾經(jīng)插入過的節(jié)點(diǎn)if (e.hash == hash && ((k = e.key) == key || (key != null && key.equals(k))))break;p = e;}}//如果e不是null,說明有需要覆蓋的節(jié)點(diǎn),由上面的break;彈出if (e != null) { // existing mapping for key//則覆蓋節(jié)點(diǎn)值,并返回原oldValueV oldValue = e.value;if (!onlyIfAbsent || oldValue == null)e.value = value;//這是一個(gè)空實(shí)現(xiàn)的函數(shù),用作LinkedHashMap重寫使用。afterNodeAccess(e);return oldValue;}}//如果執(zhí)行到了這里,說明插入了一個(gè)新的節(jié)點(diǎn),所以會(huì)修改modCount,以及返回null。++modCount;//更新size,并判斷是否需要擴(kuò)容。if (++size > threshold)resize();//這是一個(gè)空實(shí)現(xiàn)的函數(shù),用作LinkedHashMap重寫使用。afterNodeInsertion(evict);return null; }

計(jì)算實(shí)際存儲(chǔ)位置:
1:利用Java重寫的HashCode計(jì)算哈希值
2:對(duì)哈希值進(jìn)行擾動(dòng)處理 (h = key.hashCode()) ^ (h >>> 16)
3:與運(yùn)算代替模計(jì)算(n - 1) & hash

hash():轉(zhuǎn)為hash值

static final int hash(Object key) {int h;return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }

hashCode的高16位與低16位進(jìn)行異或運(yùn)算注意h進(jìn)行h >>> 16已經(jīng)被賦值,因?yàn)閮?nèi)部數(shù)組的容量一般都不會(huì)很大,基本分布在16~256之間。所以一個(gè)32位的hashCode,一直都用最低的4到8位進(jìn)行與運(yùn)算,而高位幾乎沒有參與。“擾動(dòng)函數(shù)”
獲得索引值:

(p = tab[i = (n - 1) & hash]) == null

(n - 1) & hash實(shí)際上=hash%(n)n是長度,為一個(gè)2的次方數(shù)
利用與運(yùn)算代替模運(yùn)算可以極大增加運(yùn)算速度

Hash表擴(kuò)容:
1:計(jì)算新數(shù)組的容量和閾值
2:將原數(shù)組的元素拷貝到新數(shù)組中
這里JDK1.7之前利用的是重新計(jì)算Hash索引,即rehash操作
1.8后,由于數(shù)組容量是2的次方且擴(kuò)充后翻倍,則只需要判斷原來的hash值新增的那個(gè)bit是1還是0就好了,是0的話索引沒變,是1的話索引變成“原索引+oldCap”

final HashMap.Node<K,V>[] resize() {HashMap.Node<K,V>[] oldTab = table;int oldCap = (oldTab == null) ? 0 : oldTab.length;int oldThr = threshold;int newCap, newThr = 0;if (oldCap > 0) {// 如果數(shù)組已經(jīng)是最大長度,不進(jìn)行擴(kuò)充。if (oldCap >= MAXIMUM_CAPACITY) {threshold = Integer.MAX_VALUE;return oldTab;}// 否則數(shù)組容量擴(kuò)充一倍。(2的N次方)else if ((newCap = oldCap << 1) < MAXIMUM_CAPACITY &&oldCap >= DEFAULT_INITIAL_CAPACITY)newThr = oldThr << 1; // double threshold}// 如果數(shù)組還沒創(chuàng)建,但是已經(jīng)指定了threshold(這種情況是帶參構(gòu)造創(chuàng)建的對(duì)象),threshold的值為數(shù)組長度// 在 "構(gòu)造函數(shù)" 那塊內(nèi)容進(jìn)行過說明。else if (oldThr > 0) // initial capacity was placed in thresholdnewCap = oldThr;// 這種情況是通過無參構(gòu)造創(chuàng)建的對(duì)象else { // zero initial threshold signifies using defaultsnewCap = DEFAULT_INITIAL_CAPACITY;newThr = (int)(DEFAULT_LOAD_FACTOR * DEFAULT_INITIAL_CAPACITY);}// 可能是上面newThr = oldThr << 1時(shí),最高位被移除了,變?yōu)?。if (newThr == 0) {float ft = (float)newCap * loadFactor;newThr = (newCap < MAXIMUM_CAPACITY && ft < (float)MAXIMUM_CAPACITY ?(int)ft : Integer.MAX_VALUE);}threshold = newThr;// 到了這里,新的數(shù)組長度已經(jīng)被計(jì)算出來,創(chuàng)建一個(gè)新的數(shù)組。@SuppressWarnings({"rawtypes","unchecked"})HashMap.Node<K,V>[] newTab = (HashMap.Node<K,V>[])new HashMap.Node[newCap];table = newTab;// 下面代碼是將原來數(shù)組的元素轉(zhuǎn)移到新數(shù)組中。問題在于,數(shù)組長度發(fā)生變化。 // 那么通過hash%數(shù)組長度計(jì)算的索引也將和原來的不同。// jdk 1.7中是通過重新計(jì)算每個(gè)元素的索引,重新存入新的數(shù)組,稱為rehash操作。// 這也是hashMap無序性的原因之一。而現(xiàn)在jdk 1.8對(duì)此做了優(yōu)化,非常的巧妙。if (oldTab != null) {// 遍歷原數(shù)組for (int j = 0; j < oldCap; ++j) {// 取出首節(jié)點(diǎn)HashMap.Node<K,V> e;if ((e = oldTab[j]) != null) {oldTab[j] = null;// 如果鏈表只有一個(gè)節(jié)點(diǎn),那么直接重新計(jì)算索引存入新數(shù)組。if (e.next == null)newTab[e.hash & (newCap - 1)] = e;// 如果該節(jié)點(diǎn)是紅黑樹,執(zhí)行split方法,和鏈表類似的處理。else if (e instanceof HashMap.TreeNode)((HashMap.TreeNode<K,V>)e).split(this, newTab, j, oldCap);// 此時(shí)節(jié)點(diǎn)是鏈表else { // preserve order// loHead,loTail為原鏈表的節(jié)點(diǎn),索引不變。HashMap.Node<K,V> loHead = null, loTail = null;// hiHeadm, hiTail為新鏈表節(jié)點(diǎn),原索引 + 原數(shù)組長度。HashMap.Node<K,V> hiHead = null, hiTail = null;HashMap.Node<K,V> next;// 遍歷鏈表do {next = e.next;// 新增bit為0的節(jié)點(diǎn),存入原鏈表。if ((e.hash & oldCap) == 0) {if (loTail == null)loHead = e;elseloTail.next = e;loTail = e;}// 新增bit為1的節(jié)點(diǎn),存入新鏈表。else {if (hiTail == null)hiHead = e;elsehiTail.next = e;hiTail = e;}} while ((e = next) != null);// 原鏈表存回原索引位if (loTail != null) {loTail.next = null;newTab[j] = loHead;}// 新鏈表存到:原索引位 + 原數(shù)組長度if (hiTail != null) {hiTail.next = null;newTab[j + oldCap] = hiHead;}}}}}return newTab; }

4:遍歷
參考資料
KeySet,values,EntrySet
Set< String>,Collections< String>,Set< Entry< String,String>>

在HashMap構(gòu)造時(shí),只有一個(gè)KeySet的引用,而只有當(dāng)用戶調(diào)用Map.KeySet()方法時(shí),才實(shí)例化一個(gè)最新的KeySet懶加載機(jī)制
public Set keySet() {
Set ks = keySet;
if (ks == null) {
ks = new KeySet();
keySet = ks;
}
return ks;
}
而在KeySet是一個(gè)內(nèi)部類
擁有
一:iterator,即可以通過遍歷器遍歷
public final Iterator iterator() { return new KeyIterator(); }
返回一個(gè)KeyIterator,而KeyIterator有nextNode方法進(jìn)行遍歷
final Node<K,V> nextNode() {
Node<K,V>[] t;
Node<K,V> e = next;
// fast-fail 機(jī)制的實(shí)現(xiàn) 即在迭代器往后遍歷時(shí),每次都檢測expectedModCount是否和modCount相等
// 不相等則拋出ConcurrentModificationException異常
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
//如果遍歷越界,則拋出NoSuchElementException異常
if (e == null)
throw new NoSuchElementException();
if ((next = (current = e).next) == null && (t = table) != null) {
//如果遍歷到末尾,則跳到table中下一個(gè)不為null的節(jié)點(diǎn)處
do {} while (index < t.length && (next = t[index++]) == null);
}
return e;
}
二:調(diào)用forEach方法
public final void forEach(Consumer<? super V> action) {—}思想和上述類似,都是利用tab[index]進(jìn)行遍歷訪問,并沒有涉及Set元素的增添

五:化樹

static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V> {TreeNode<K,V> parent; // 紅黑樹父節(jié)點(diǎn)TreeNode<K,V> left;TreeNode<K,V> right;TreeNode<K,V> prev; // 刪除后需要取消鏈接boolean red;TreeNode(int hash, K key, V val, Node<K,V> next) {super(hash, key, val, next);}

我們知道當(dāng)一個(gè)桶中節(jié)點(diǎn)數(shù)量超過8時(shí)就會(huì)轉(zhuǎn)化為紅黑樹,過程如下:
步驟一:treeifyBin()先將所有節(jié)點(diǎn)替換為TreeNode,然后再將單鏈表轉(zhuǎn)為雙鏈表
步驟二:treeify(tab);依次比較節(jié)點(diǎn),分別比較Hash值(HashCode異或16位的值),是否有比較器,兩者的類名(),對(duì)象的HashCode
步驟三:進(jìn)行平衡調(diào)整
d = a.getClass().getName().
compareTo(b.getClass().getName())) == 0

關(guān)鍵點(diǎn):為什么實(shí)際大小總是2的冪?
我的理解:

原因一:
因?yàn)閕ndex=hash%length-1
比如對(duì)于:
length=16 則length-1 =15 即 00001111
length=32 則length-1=31 即 00011111
可以看到,對(duì)于一個(gè)相同的hash,分別&兩個(gè)不同的length-1,得到的結(jié)果result1,result2 差別就只在右數(shù)第5位,相當(dāng)于擴(kuò)容后只要修改一位就可以改變索引

原因二:
因?yàn)閘ength=2^n,則length-1的位都是保持00001111111的形狀,而hash&length-1中,高位不會(huì)產(chǎn)生影響,而低位任意一個(gè)變化變化都會(huì)產(chǎn)生影響,減少?zèng)_突的概率。
在h<length的情況下:
對(duì)于長度:23 length-1則比特為 10110,則對(duì)于結(jié)果result=10110
既可以是h=11110 10110 11111 10111 都對(duì)應(yīng)相同的結(jié)果沖突增加
而對(duì)于長度32 length-1 則比特位11111 ,則對(duì)于結(jié)果10110
只有h=10110才可以與其對(duì)應(yīng)

原因三:可以用與運(yùn)算代替模運(yùn)算,增加了效率

JDK1.7和JDK1.8中HashMap的區(qū)別
底層:
最重要的一點(diǎn)是底層結(jié)構(gòu)不一樣,1.7是數(shù)組+鏈表,1.8則是數(shù)組+鏈表+紅黑樹結(jié)構(gòu);并且內(nèi)部類的實(shí)現(xiàn)也有區(qū)別
1.7:Entry
1.8:Node-Entry-TreeNode 兩個(gè)Entry是不同的

put:
1:1.8中會(huì)將節(jié)點(diǎn)插入到鏈表尾部,而1.7中是采用頭插
頭插法:
1:擴(kuò)容時(shí)顛倒鏈表順序
2:擴(kuò)容時(shí)形成閉環(huán)
線程1插入節(jié)點(diǎn)A,線程2插入節(jié)點(diǎn)B。順序
1A 2B 2A 此時(shí)成環(huán)
而尾插法會(huì)遍歷鏈表,如果發(fā)現(xiàn)已經(jīng)在則停止
為什么頭插法形成閉環(huán)
2:jdk1.7中的hash函數(shù)對(duì)哈希值的計(jì)算直接使用key的hashCode值,而1.8中則是采用key的hashCode異或上key的hashCode進(jìn)行無符號(hào)右移16位的結(jié)果,避免了只靠低位數(shù)據(jù)來計(jì)算哈希時(shí)導(dǎo)致的沖突,計(jì)算結(jié)果由高低位結(jié)合決定,使元素分布更均勻;

擴(kuò)容:
1:擴(kuò)容時(shí)1.8會(huì)保持原鏈表的順序,而1.7會(huì)顛倒鏈表的順序;
2:jdk1.8是擴(kuò)容時(shí)通過hash&cap是否等于0將鏈表分散,無需改變hash值,而1.7是通過更新hashSeed來修改hash值達(dá)到分散的目的;
3:擴(kuò)容策略:1.7中是只要不小于閾值就直接擴(kuò)容2倍;而1.8的擴(kuò)容策略會(huì)更優(yōu)化,當(dāng)數(shù)組容量未達(dá)到64時(shí),以2倍進(jìn)行擴(kuò)容,超過64之后若桶中元素個(gè)數(shù)不小于7就將鏈表轉(zhuǎn)換為紅黑樹,但如果紅黑樹中的元素個(gè)數(shù)小于6就會(huì)還原為鏈表,當(dāng)紅黑樹中元素大于32的時(shí)候才會(huì)再次擴(kuò)容。

HashTable:
Hashtable 是遺留類
很多映射的常用功能與 HashMap 類似,不同的是它承自 Dictionary 類,
線程安全的,并發(fā)性不如 ConcurrentHashMap,
HashTable和HashMap的區(qū)別:
1:HashTable線程安全,HashMap線程不安全
2:HashTable不允許鍵和值為Null,而HashMap允許。
兩點(diǎn)原因:
1:源碼角度
HashTable:可以看到會(huì)直接調(diào)用hash=key.hashCode();當(dāng)key為null時(shí)報(bào)錯(cuò)
而HashMap會(huì)進(jìn)行一個(gè)判斷,如果key為null則設(shè)為0

2:設(shè)計(jì)角度,hashtable為早期版本,可能認(rèn)為null不可以作為分類依據(jù)。而后面的hashmap可能認(rèn)為null也可以作為分類依據(jù)

HashTable、ConcurrentHashMap以及Collections中的靜態(tài)方法SynchronizedMap比較:
HashTable:對(duì)set/get方法都使用synchronized
SynchronizedMap:內(nèi)部封裝HashMap,加了synchronized
ConcurrentHashMap:synchronized+CAS

紅黑樹:
參考資料
參考資料
性質(zhì):
1:根節(jié)點(diǎn)和葉子結(jié)點(diǎn)是黑色
2:不能出現(xiàn)連續(xù)的兩個(gè)紅色結(jié)點(diǎn)
3:從根到任意葉子結(jié)點(diǎn)上的黑色結(jié)點(diǎn)數(shù)相同
根據(jù)定義:
若節(jié)點(diǎn)只有一棵子樹,那么一定是黑根+紅子

查找:O(log2(N))的時(shí)間復(fù)雜度
插入:插入節(jié)點(diǎn)都是紅色結(jié)點(diǎn)
判斷父親節(jié)點(diǎn)
1:若是黑色,直接插入紅色節(jié)點(diǎn)
2:若是紅色,判斷叔叔節(jié)點(diǎn)。插入紅色節(jié)點(diǎn)后
若叔叔節(jié)點(diǎn)是紅色:交換色(父叔節(jié)點(diǎn)和祖父節(jié)點(diǎn)換色)
若叔叔節(jié)點(diǎn)是黑色(或者不存在):交換色+旋轉(zhuǎn) 四種情況
其實(shí)不可能是黑色,只有不存在的情形。因?yàn)楦赣H節(jié)點(diǎn)是單子樹或者子節(jié)點(diǎn),但是如果是單子樹只能是黑色(這樣卻不滿足性質(zhì)3),所以父親節(jié)點(diǎn)是葉子結(jié)點(diǎn),那么叔叔只能是紅色或者無
刪除:
步驟1:確定實(shí)際的刪除位置
步驟2:當(dāng)進(jìn)入情形1時(shí),進(jìn)行樹的平衡調(diào)整

步驟1:
情形1:葉子節(jié)點(diǎn):如果是紅色直接刪除,如果是黑色那么需要進(jìn)行平衡
情形2:有一個(gè)葉子:子節(jié)點(diǎn)代替(變?yōu)閯h除子節(jié)點(diǎn))——轉(zhuǎn)化為情形1或2或3
情形3:有兩個(gè)葉子:最鄰近代替(一般是右子樹,變?yōu)閯h除替換節(jié)點(diǎn))——直接轉(zhuǎn)化為情形1
葉子代替的時(shí)候,將代替節(jié)點(diǎn)轉(zhuǎn)化為被代替的顏色

樹的平衡調(diào)整
被刪除結(jié)點(diǎn):
若被刪除結(jié)點(diǎn)兄弟節(jié)點(diǎn)在右子樹
被刪除結(jié)點(diǎn)節(jié)點(diǎn)紅色:直接刪除
被刪除結(jié)點(diǎn)節(jié)點(diǎn)黑色:
1 被刪除結(jié)點(diǎn)兄弟節(jié)點(diǎn)為紅色:父親兄弟改色+旋轉(zhuǎn)——2.3
2 被刪除結(jié)點(diǎn)兄弟節(jié)點(diǎn)是黑色:
2.1兄弟節(jié)點(diǎn)的右子節(jié)點(diǎn)為紅色:兄弟黑,父親兄右紅+旋轉(zhuǎn)(唯一終態(tài))
2.2兄弟節(jié)點(diǎn)的右子為黑色,但是左子為紅色:換色后旋轉(zhuǎn)——變?yōu)?.1
2.3兄弟節(jié)點(diǎn)雙子都是黑色:改色+父節(jié)點(diǎn)作為替換節(jié)點(diǎn)
優(yōu)勢:
平衡二叉樹的插入/刪除操作帶來的旋轉(zhuǎn)操作可能會(huì)達(dá)到logn次,而紅黑樹的插入/刪除操作帶來的旋轉(zhuǎn)操作最多為2/3次。

平衡二叉樹的刪除:

參考資料
左子樹上節(jié)點(diǎn)的刪除相當(dāng)于我們?cè)谟易訕渖喜迦肓艘粋€(gè)新節(jié)點(diǎn),右子樹上節(jié)點(diǎn)的刪除相當(dāng)于在左子樹上插入了一個(gè)新節(jié)點(diǎn)
三種情況:
1:被刪節(jié)點(diǎn)為葉節(jié)點(diǎn)
2:被刪節(jié)點(diǎn)只一個(gè)葉節(jié)點(diǎn)
3:被刪節(jié)點(diǎn)有兩個(gè)葉子結(jié)點(diǎn)

LInkedHashMap:
HashMap和LinkedList的結(jié)合體,可以看到節(jié)點(diǎn)含有三個(gè)指針(鏈表),四個(gè)指針(樹)

static class Entry<K,V> extends Node<K,V> {Entry<K,V> before, after;Entry(int hash, K key, V value, Node<K,V> next) {super(hash, key, value, next);}}

accessOrder兩種順序進(jìn)行存儲(chǔ)
一種是元素的插入順序,另一種便是元素的訪問順序(LRU緩存實(shí)現(xiàn))
LRU的實(shí)現(xiàn):最久未訪問元素
addBefore(lm.header)是把當(dāng)前訪問的元素挪到head的前面,即最近訪問的元素被放到了鏈表頭,如此要實(shí)現(xiàn)LRU算法只需要從鏈表末尾往前刪除就可以
而刪除如何實(shí)現(xiàn)的呢?

void addEntry(int hash, K key, V value, int bucketIndex) {super.addEntry(hash, key, value, bucketIndex);// Remove eldest entry if instructedEntry<K,V> eldest = header.after;if (removeEldestEntry(eldest)) {removeEntryForKey(eldest.key);}}

可以看到判斷removeEldestEntry(eldest)即是否需要?jiǎng)h除最晚元素
LinkedHashMap默認(rèn)的removeEldestEntry方法如下

protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {return false;}

所以開發(fā)者需要實(shí)現(xiàn)LRU算法只需要繼承LinkedHashMap并重寫removeEldestEntry方法

內(nèi)部比較器和外部比較器:
參考資料
內(nèi)部:實(shí)現(xiàn)Comparable接口并重寫compareTo
外部:單獨(dú)定義一個(gè)類實(shí)現(xiàn)Comparator接口并重寫compare

TreeMap:底層架構(gòu)是紅黑樹
數(shù)據(jù)結(jié)構(gòu)是Entry,并沒有復(fù)用HashMap的TreeNode節(jié)省內(nèi)存?
static final class Entry<K,V> implements Map.Entry<K,V> {
K key;
V value;
Entry<K,V> left;
Entry<K,V> right;
Entry<K,V> parent;
boolean color = BLACK;
}
比較是先進(jìn)行外部比較器的比較,再進(jìn)行內(nèi)部比較器的比較
如果沒有定義外部比較器,key=null則報(bào)錯(cuò)
如果沒有定義外部比較器,key也沒有實(shí)現(xiàn)Comparable接口,報(bào)
問題一:
基本數(shù)據(jù)結(jié)構(gòu)都實(shí)現(xiàn)了Comparable,但是如果是某個(gè)類,需要實(shí)現(xiàn)Comparable接口?
因?yàn)槠鋾?huì)調(diào)用compareTo的方法
問題二:如何實(shí)現(xiàn)一致性哈希
tailMap(K fromKey)方法,支持從紅黑樹中查找比fromKey大的值的集合,但并不需要遍歷整個(gè)數(shù)據(jù)結(jié)構(gòu)
第一個(gè)順時(shí)針元素Integer i = subMap.firstKey();即是我們的存儲(chǔ)節(jié)點(diǎn)

我們只要把服務(wù)器的節(jié)點(diǎn)名字取hashCode(需要加虛擬節(jié)點(diǎn),簡便實(shí)現(xiàn)方式為+i)put進(jìn)TreeMap中,之后對(duì)于查找的點(diǎn)調(diào)用tailMap/subMap.firstKey即可

LinkedListHashMap:結(jié)構(gòu),實(shí)現(xiàn)LRU
TreeMap:比較器,實(shí)現(xiàn)一致性哈希

Queue

超級(jí)接口:
Queue 接口
Deque 雙端接口

ArrayQueue:普通隊(duì)列
參考資料
1:不可擴(kuò)容
2:循環(huán)隊(duì)列(數(shù)組)
一般來說,隊(duì)空隊(duì)滿head==tail的區(qū)分法有三種常用方法,但是ArrayQueue并沒有使用,而是利用this.capacity = capacity + 1;
當(dāng)add后if (newtail == head)表示此時(shí)已經(jīng)有 capacity + 1個(gè)元素,直接報(bào)錯(cuò) 不具有容錯(cuò)性,感覺不咋樣

public boolean add(T o) {queue[tail] = o;// 通過除余來實(shí)現(xiàn)下標(biāo)的循環(huán);int newtail = (tail + 1) % capacity;if (newtail == head)throw new IndexOutOfBoundsException("Queue full");tail = newtail;return true; // we did add something}public T remove(int i) {if (i != 0)throw new IllegalArgumentException("Can only remove head of queue");if (head == tail)throw new IndexOutOfBoundsException("Queue empty");T removed = queue[head];queue[head] = null;// 通過除余來實(shí)現(xiàn)下標(biāo)的循環(huán);head = (head + 1) % capacity;return removed;}

ArrayDeque:雙端隊(duì)列,實(shí)現(xiàn)了Deque超級(jí)接口
參考資料
1:可以擴(kuò)充,方式為2的次方容積和HashMap一致
區(qū)別在于如果輸入的大于1<<30,則返回1<<30 理解為10000–為-0,小于0

if (initialCapacity < 0) initialCapacity >>>= 1;

2:利用循環(huán)數(shù)組,且是雙端循環(huán)數(shù)組理解為兩個(gè)棧
開始的時(shí)候head=0,tail=0。當(dāng)要在head插入數(shù)值時(shí),是先移動(dòng)位置再賦值
步驟一:head = (head - 1),此時(shí)head=-1,而負(fù)數(shù)是以偽碼形似存儲(chǔ)1111 1111 1111 1111 1111 1111 1111 1111
步驟二:1111 1111 1111 1111 1111 1111 1111 1111 & (elements.length - 1)
其實(shí)本質(zhì)就是對(duì)elements[elements.length - 1]=e
步驟三:當(dāng)再插入時(shí),-2偽碼1111 1111 1111 1111 1111 1111 1111 1110
與之后相當(dāng)于elements[elements.length - 2]=e
可以看到實(shí)際就是上圖循環(huán)數(shù)組的龍尾部分

同理,我們可以對(duì)tail進(jìn)行分析,先賦值再移動(dòng)位置,實(shí)際上就是上圖的龍首部分

public void addFirst(E e) {
if (e == null)
throw new NullPointerException();
elements[head = (head - 1) & (elements.length - 1)] = e;
if (head == tail)
doubleCapacity();
}
public void addLast(E e) {
if (e == null)
throw new NullPointerException();
elements[tail] = e;
if ( (tail = (tail + 1) & (elements.length - 1)) == head)
doubleCapacity();

而當(dāng) if (head == tail)時(shí),擴(kuò)充容newCapacity = n << 1
并將head之后的元素復(fù)制到新數(shù)組的開頭,把剩余的元素復(fù)制到新數(shù)組之后
原數(shù)組長度為n,(tail=head)——0為tail棧,(tail=head)——n-1為head棧。記head=tail=flag

新數(shù)組相當(dāng)于交叉原數(shù)組
新數(shù)組長度為2n,head=0——flag為head棧,tail——flag為tail棧

3:刪除元素。同樣分為pollFirst()和pollLast() 。并且實(shí)現(xiàn)了如棧操作:pop,push,peek,隊(duì)列操作:add,offer,remove,poll,peek,element,雙端隊(duì)列操作:addFirst,addLast,getFirst,getLast等方法,目的是模擬其他數(shù)據(jù)結(jié)構(gòu)

4:遍歷:可以看到從head開始遍歷到tail。沒有使用fast-fail機(jī)制,而是利用
if (tail != fence || result == null),即判斷head和tail和記錄的有無更改和modCount一個(gè)思想

private class DeqIterator implements Iterator<E> {private int cursor = head;private int fence = tail;private int lastRet = -1;public boolean hasNext() {return cursor != fence;}public E next() {if (cursor == fence)throw new NoSuchElementException();@SuppressWarnings("unchecked")E result = (E) elements[cursor];if (tail != fence || result == null)throw new ConcurrentModificationException();lastRet = cursor;

PriorityQueue:
1:PriorityQueue是優(yōu)先級(jí)隊(duì)列,取出元素時(shí)會(huì)根據(jù)元素的優(yōu)先級(jí)進(jìn)行排序。其內(nèi)部內(nèi)部是一個(gè)用數(shù)組實(shí)現(xiàn)的小頂堆
2:使用場景:N取K,動(dòng)態(tài)插入含有優(yōu)先級(jí)的數(shù)組

private void grow(int minCapacity) {int oldCapacity = queue.length;// 如果當(dāng)前容量比較小(小于64)的話進(jìn)行雙倍擴(kuò)容,否則擴(kuò)容50%int newCapacity = oldCapacity + ((oldCapacity < 64) ?(oldCapacity +2) :(oldCapacity >> 1));// 如果發(fā)現(xiàn)擴(kuò)容后溢出了,則進(jìn)行調(diào)整if (newCapacity - MAX_ARRAY_SIZE > 0)newCapacity = hugeCapacity(minCapacity);queue = Arrays.copyOf(queue, newCapacity);}

Set

基本類
AbstractSet:提供 Set 接口的骨干實(shí)現(xiàn),從而最大限度地減少了實(shí)現(xiàn)此接口所需的工作。實(shí)現(xiàn)了HashCode,equals,removeAll
SortedSet:按照對(duì)象的比較函數(shù)對(duì)元素排序
NavigableSet:接口繼承自SortedSet接口

引申類:
HashSet
通過內(nèi)部成員變量HashMap實(shí)現(xiàn)其功能
public Iterator iterator() {
return map.keySet().iterator();
}
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
其中PRESENT是一個(gè)Object 對(duì)象

LinkedHashSet:擁有HashSet的功能,且能實(shí)現(xiàn)插入有序或者訪問有序。依靠成員變量LinkedHashMap實(shí)現(xiàn)
TreeSet:可自定義排序的Set
擁有成員變量NavigableMap
private transient NavigableMap<E,Object> m;
// map中共用的一個(gè)value
private static final Object PRESENT = new Object();

KeySet:HashMap的內(nèi)部類,繼承AbstractSet

總結(jié)

以上是生活随笔為你收集整理的Java基础知识——集合类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

亚洲成av人影院在线观看 | 国产成人午夜福利在线播放 | 亚洲一区av无码专区在线观看 | 四虎影视成人永久免费观看视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲综合在线一区二区三区 | 国产人妻精品一区二区三区 | 巨爆乳无码视频在线观看 | 亚洲中文字幕无码一久久区 | 国产亚洲精品久久久ai换 | 亚洲欧美日韩成人高清在线一区 | 亚洲国产一区二区三区在线观看 | 国产精品久久久一区二区三区 | 欧美一区二区三区 | 国产精品无码一区二区三区不卡 | 娇妻被黑人粗大高潮白浆 | 国产乱人偷精品人妻a片 | 小鲜肉自慰网站xnxx | 狠狠色噜噜狠狠狠狠7777米奇 | 性做久久久久久久免费看 | 九九综合va免费看 | 国产97人人超碰caoprom | 人妻互换免费中文字幕 | 在线视频网站www色 | 无码吃奶揉捏奶头高潮视频 | 亚洲高清偷拍一区二区三区 | av无码不卡在线观看免费 | 国产小呦泬泬99精品 | 国产成人综合美国十次 | 精品一区二区三区波多野结衣 | 国产麻豆精品精东影业av网站 | 九月婷婷人人澡人人添人人爽 | 日韩欧美群交p片內射中文 | 青青草原综合久久大伊人精品 | 国产av久久久久精东av | 秋霞成人午夜鲁丝一区二区三区 | 久久久久久久人妻无码中文字幕爆 | 精品久久久久久人妻无码中文字幕 | 好男人社区资源 | 无码人妻少妇伦在线电影 | 亚洲国产午夜精品理论片 | 18禁黄网站男男禁片免费观看 | 亚洲呦女专区 | 亚洲国产精品久久久天堂 | 国产亚洲精品久久久闺蜜 | 人妻中文无码久热丝袜 | 久久久精品国产sm最大网站 | 国产肉丝袜在线观看 | 亚洲日韩av一区二区三区四区 | 97久久精品无码一区二区 | 激情内射亚州一区二区三区爱妻 | 内射白嫩少妇超碰 | 亚洲爆乳大丰满无码专区 | 成人精品天堂一区二区三区 | 欧美日韩在线亚洲综合国产人 | 国精产品一区二区三区 | 国产亚洲精品久久久久久国模美 | 2020久久香蕉国产线看观看 | 国产免费久久精品国产传媒 | av香港经典三级级 在线 | 亚洲爆乳大丰满无码专区 | 久久午夜夜伦鲁鲁片无码免费 | 久久久久亚洲精品中文字幕 | 中文久久乱码一区二区 | 亚洲精品国偷拍自产在线观看蜜桃 | 丝袜 中出 制服 人妻 美腿 | 日产精品99久久久久久 | 蜜桃无码一区二区三区 | 国产人妻精品午夜福利免费 | 亚洲成av人片天堂网无码】 | 久久天天躁狠狠躁夜夜免费观看 | 图片小说视频一区二区 | 国产亚洲美女精品久久久2020 | 99精品无人区乱码1区2区3区 | 亚洲精品久久久久中文第一幕 | 人人妻人人澡人人爽人人精品浪潮 | 国产亚洲精品久久久久久大师 | 国内少妇偷人精品视频免费 | 性啪啪chinese东北女人 | 久久国语露脸国产精品电影 | 偷窥日本少妇撒尿chinese | 亚洲欧洲无卡二区视頻 | 高潮毛片无遮挡高清免费视频 | 综合人妻久久一区二区精品 | 亚洲色欲久久久综合网东京热 | 麻豆精产国品 | 强辱丰满人妻hd中文字幕 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产黄在线观看免费观看不卡 | 国产九九九九九九九a片 | 男人和女人高潮免费网站 | 55夜色66夜色国产精品视频 | 中文字幕 人妻熟女 | 2020久久香蕉国产线看观看 | 99re在线播放 | 风流少妇按摩来高潮 | 亚洲人成网站免费播放 | 捆绑白丝粉色jk震动捧喷白浆 | 色情久久久av熟女人妻网站 | 久热国产vs视频在线观看 | 午夜福利试看120秒体验区 | 综合人妻久久一区二区精品 | 巨爆乳无码视频在线观看 | 国产精品久久国产精品99 | 六十路熟妇乱子伦 | 亚洲熟女一区二区三区 | 亚洲男人av香蕉爽爽爽爽 | 97人妻精品一区二区三区 | 国产极品美女高潮无套在线观看 | 久9re热视频这里只有精品 | 亚洲狠狠色丁香婷婷综合 | 国产日产欧产精品精品app | 国产精品亚洲lv粉色 | 色狠狠av一区二区三区 | 中文字幕亚洲情99在线 | 国产黄在线观看免费观看不卡 | 熟女体下毛毛黑森林 | 中文精品无码中文字幕无码专区 | 亚洲男人av香蕉爽爽爽爽 | 成人女人看片免费视频放人 | 欧美日韩在线亚洲综合国产人 | 国产精品爱久久久久久久 | 丰满人妻被黑人猛烈进入 | 精品国偷自产在线 | 亚洲精品国产精品乱码不卡 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲国产欧美在线成人 | 女人高潮内射99精品 | 久久久婷婷五月亚洲97号色 | 久久久中文字幕日本无吗 | 天干天干啦夜天干天2017 | 亚洲中文无码av永久不收费 | 免费观看又污又黄的网站 | 国产精品无码永久免费888 | 久久99精品国产麻豆蜜芽 | 大胆欧美熟妇xx | 久久精品国产一区二区三区肥胖 | 久久这里只有精品视频9 | 国产熟女一区二区三区四区五区 | 亚洲精品一区二区三区在线观看 | 国产精品嫩草久久久久 | a在线亚洲男人的天堂 | 巨爆乳无码视频在线观看 | 伊在人天堂亚洲香蕉精品区 | 中文字幕乱码人妻二区三区 | 少妇高潮一区二区三区99 | 国产亚洲欧美在线专区 | 97无码免费人妻超级碰碰夜夜 | 欧美35页视频在线观看 | 国产人妻精品一区二区三区不卡 | 高清无码午夜福利视频 | 性史性农村dvd毛片 | 国产人妖乱国产精品人妖 | 免费无码的av片在线观看 | 久久午夜无码鲁丝片秋霞 | 亚洲日韩av一区二区三区四区 | 日欧一片内射va在线影院 | 国产精品亚洲一区二区三区喷水 | 网友自拍区视频精品 | 日韩av无码一区二区三区 | 亚洲精品一区国产 | 亚洲呦女专区 | 午夜精品一区二区三区在线观看 | 亚洲国产精品久久久天堂 | 国产特级毛片aaaaaaa高清 | 丰腴饱满的极品熟妇 | 国产一区二区三区四区五区加勒比 | 久久精品人人做人人综合试看 | 久久久成人毛片无码 | 欧美乱妇无乱码大黄a片 | 亚洲毛片av日韩av无码 | 暴力强奷在线播放无码 | 少妇性l交大片 | 亚洲日本一区二区三区在线 | 免费国产成人高清在线观看网站 | 国产人妻大战黑人第1集 | 天堂亚洲2017在线观看 | 日韩亚洲欧美精品综合 | 无码国产激情在线观看 | 国产精品久久久久无码av色戒 | 极品嫩模高潮叫床 | 熟女俱乐部五十路六十路av | 久久国产精品二国产精品 | 亚洲精品国产精品乱码不卡 | 久久久婷婷五月亚洲97号色 | 亚洲熟熟妇xxxx | 澳门永久av免费网站 | a片在线免费观看 | 人人超人人超碰超国产 | 国产成人无码a区在线观看视频app | 免费无码一区二区三区蜜桃大 | 国产三级精品三级男人的天堂 | 最近中文2019字幕第二页 | 亚洲国产欧美日韩精品一区二区三区 | 久久午夜无码鲁丝片秋霞 | 中文无码伦av中文字幕 | 一本久久a久久精品vr综合 | 四虎影视成人永久免费观看视频 | 亚洲国产成人a精品不卡在线 | 亚洲娇小与黑人巨大交 | 一区二区三区高清视频一 | 人人妻人人澡人人爽精品欧美 | 亚洲精品一区二区三区在线 | 日韩成人一区二区三区在线观看 | 亚洲精品国产a久久久久久 | 欧美日韩人成综合在线播放 | 中国女人内谢69xxxxxa片 | 国产精品第一国产精品 | 精品国产国产综合精品 | 亚洲成av人综合在线观看 | 丁香啪啪综合成人亚洲 | 曰韩少妇内射免费播放 | 成人影院yy111111在线观看 | 日韩精品无码一区二区中文字幕 | 国产人妻精品一区二区三区 | 秋霞成人午夜鲁丝一区二区三区 | 亚洲经典千人经典日产 | 欧美成人免费全部网站 | 中文字幕乱码人妻无码久久 | 免费观看又污又黄的网站 | 日韩av无码中文无码电影 | 国产一区二区三区精品视频 | 久久人妻内射无码一区三区 | 久久综合香蕉国产蜜臀av | 国模大胆一区二区三区 | 欧美国产日韩久久mv | 欧美阿v高清资源不卡在线播放 | 无码午夜成人1000部免费视频 | 中文字幕乱码人妻二区三区 | 亚洲精品国产a久久久久久 | 无码人妻精品一区二区三区不卡 | 97人妻精品一区二区三区 | 人人妻人人澡人人爽人人精品浪潮 | 超碰97人人做人人爱少妇 | 高潮毛片无遮挡高清免费视频 | 色 综合 欧美 亚洲 国产 | 131美女爱做视频 | 装睡被陌生人摸出水好爽 | 精品国产一区二区三区四区 | 无码av中文字幕免费放 | 欧美精品国产综合久久 | 午夜无码人妻av大片色欲 | 中文字幕无码免费久久9一区9 | 亚洲 欧美 激情 小说 另类 | 免费看少妇作爱视频 | 国产精品理论片在线观看 | 77777熟女视频在线观看 а天堂中文在线官网 | 人妻与老人中文字幕 | 亚洲成色www久久网站 | 人人爽人人澡人人人妻 | 亚洲一区二区三区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产av无码专区亚洲a∨毛片 | 牲欲强的熟妇农村老妇女 | 日日橹狠狠爱欧美视频 | 荫蒂被男人添的好舒服爽免费视频 | 中文字幕人妻无码一区二区三区 | 欧美成人午夜精品久久久 | 两性色午夜视频免费播放 | 久久国产自偷自偷免费一区调 | 国产乱码精品一品二品 | 国产精品成人av在线观看 | 亚洲精品一区二区三区四区五区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产熟妇另类久久久久 | 综合激情五月综合激情五月激情1 | 国产明星裸体无码xxxx视频 | 俄罗斯老熟妇色xxxx | 无码精品国产va在线观看dvd | 美女黄网站人色视频免费国产 | 精品无码av一区二区三区 | a在线亚洲男人的天堂 | 国产午夜福利100集发布 | 亚洲人亚洲人成电影网站色 | 波多野结衣一区二区三区av免费 | 久久久中文久久久无码 | 免费看少妇作爱视频 | 日日天干夜夜狠狠爱 | 久久精品人人做人人综合试看 | 麻豆md0077饥渴少妇 | 亚洲中文字幕在线观看 | 无码av免费一区二区三区试看 | 性做久久久久久久久 | 欧美日韩视频无码一区二区三 | 无遮挡国产高潮视频免费观看 | 国产午夜福利亚洲第一 | 国产又粗又硬又大爽黄老大爷视 | 亚洲国产欧美日韩精品一区二区三区 | 国内精品人妻无码久久久影院蜜桃 | 国产人妻精品一区二区三区 | 4hu四虎永久在线观看 | 丰满人妻精品国产99aⅴ | 精品人妻中文字幕有码在线 | 97精品国产97久久久久久免费 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 美女张开腿让人桶 | 欧美丰满少妇xxxx性 | 国产无遮挡吃胸膜奶免费看 | 综合激情五月综合激情五月激情1 | 亚洲精品无码国产 | 亚洲成色在线综合网站 | 成人无码精品1区2区3区免费看 | 国产麻豆精品精东影业av网站 | 乱码av麻豆丝袜熟女系列 | 日产精品99久久久久久 | 国产av一区二区精品久久凹凸 | 无码人妻av免费一区二区三区 | 野外少妇愉情中文字幕 | 国产女主播喷水视频在线观看 | 最近的中文字幕在线看视频 | 欧美日本免费一区二区三区 | 波多野结衣高清一区二区三区 | 日本一区二区三区免费播放 | 亚洲va中文字幕无码久久不卡 | 捆绑白丝粉色jk震动捧喷白浆 | 又粗又大又硬毛片免费看 | 午夜福利一区二区三区在线观看 | 久久国产精品精品国产色婷婷 | 精品久久久久香蕉网 | 亚洲综合精品香蕉久久网 | 夜精品a片一区二区三区无码白浆 | 激情综合激情五月俺也去 | 77777熟女视频在线观看 а天堂中文在线官网 | 在线成人www免费观看视频 | 成人性做爰aaa片免费看不忠 | 中文字幕无码av激情不卡 | 日本一卡2卡3卡四卡精品网站 | 免费人成在线视频无码 | 国产av剧情md精品麻豆 | 免费国产成人高清在线观看网站 | 一本大道伊人av久久综合 | 18禁黄网站男男禁片免费观看 | 亚洲熟妇色xxxxx欧美老妇 | 狠狠色噜噜狠狠狠狠7777米奇 | 无码成人精品区在线观看 | 久久99精品久久久久久动态图 | 帮老师解开蕾丝奶罩吸乳网站 | 国产亚洲精品久久久久久大师 | 啦啦啦www在线观看免费视频 | 国产内射爽爽大片视频社区在线 | 欧洲美熟女乱又伦 | 疯狂三人交性欧美 | 久久久久久亚洲精品a片成人 | 99riav国产精品视频 | 国产精品人妻一区二区三区四 | 久久久久久久久888 | 日本精品高清一区二区 | 国产xxx69麻豆国语对白 | 国产香蕉尹人视频在线 | 国产精品毛多多水多 | 人妻与老人中文字幕 | 国产精品高潮呻吟av久久 | aⅴ在线视频男人的天堂 | 色婷婷久久一区二区三区麻豆 | 两性色午夜视频免费播放 | 狠狠色噜噜狠狠狠狠7777米奇 | 欧美一区二区三区视频在线观看 | 国产卡一卡二卡三 | 国产内射老熟女aaaa | 国产精品无码永久免费888 | 十八禁真人啪啪免费网站 | www国产精品内射老师 | 久久无码人妻影院 | 国产香蕉97碰碰久久人人 | 色综合久久久无码中文字幕 | 亚洲精品一区三区三区在线观看 | 亚洲国产精品毛片av不卡在线 | 精品一区二区三区无码免费视频 | 欧美黑人性暴力猛交喷水 | 亚洲精品国产精品乱码不卡 | 内射巨臀欧美在线视频 | 人人妻人人澡人人爽人人精品浪潮 | 精品日本一区二区三区在线观看 | 中文字幕人妻丝袜二区 | 熟女少妇在线视频播放 | 久久99精品久久久久久动态图 | 精品久久久久久亚洲精品 | 精品国偷自产在线视频 | 亚洲国产精品一区二区第一页 | 国产欧美熟妇另类久久久 | 久久国产精品萌白酱免费 | 色综合久久久无码中文字幕 | 日韩人妻少妇一区二区三区 | 日本大乳高潮视频在线观看 | 亚洲热妇无码av在线播放 | 久久久久免费精品国产 | 久久伊人色av天堂九九小黄鸭 | 成年美女黄网站色大免费视频 | 国产香蕉尹人视频在线 | 日本丰满护士爆乳xxxx | 亚洲男女内射在线播放 | 激情国产av做激情国产爱 | 麻豆av传媒蜜桃天美传媒 | 国产激情精品一区二区三区 | 国产成人精品优优av | 国产超碰人人爽人人做人人添 | 精品国产精品久久一区免费式 | 国语自产偷拍精品视频偷 | 影音先锋中文字幕无码 | 捆绑白丝粉色jk震动捧喷白浆 | 日韩人妻系列无码专区 | 高潮喷水的毛片 | 亚洲а∨天堂久久精品2021 | 亚洲毛片av日韩av无码 | 噜噜噜亚洲色成人网站 | 野狼第一精品社区 | 色欲久久久天天天综合网精品 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 色综合久久中文娱乐网 | 亚洲码国产精品高潮在线 | 亚洲精品一区二区三区在线 | 中文字幕人妻无码一夲道 | 蜜桃臀无码内射一区二区三区 | 51国偷自产一区二区三区 | 成熟女人特级毛片www免费 | 久久精品国产大片免费观看 | 国产午夜亚洲精品不卡下载 | 亚洲成av人片在线观看无码不卡 | 亚洲综合无码久久精品综合 | 两性色午夜视频免费播放 | 国产精品毛多多水多 | 少妇久久久久久人妻无码 | 欧美老熟妇乱xxxxx | 两性色午夜免费视频 | 久久久久久国产精品无码下载 | 欧美第一黄网免费网站 | 中文字幕 亚洲精品 第1页 | 欧美第一黄网免费网站 | 在线观看欧美一区二区三区 | 99精品视频在线观看免费 | 少妇性l交大片欧洲热妇乱xxx | 131美女爱做视频 | 国产精品-区区久久久狼 | 国内少妇偷人精品视频 | 中文字幕无码人妻少妇免费 | 曰韩少妇内射免费播放 | 老熟妇乱子伦牲交视频 | 免费无码肉片在线观看 | 国产精品无码久久av | 熟妇人妻中文av无码 | 久久熟妇人妻午夜寂寞影院 | 亚洲大尺度无码无码专区 | 乱码av麻豆丝袜熟女系列 | 亚洲最大成人网站 | 日日噜噜噜噜夜夜爽亚洲精品 | 欧美日本免费一区二区三区 | 亚洲の无码国产の无码步美 | 无遮挡啪啪摇乳动态图 | 国产精品久久久久9999小说 | 波多野结衣一区二区三区av免费 | 国产美女精品一区二区三区 | 曰韩少妇内射免费播放 | 亚洲天堂2017无码中文 | 人妻有码中文字幕在线 | 性生交大片免费看女人按摩摩 | 性生交片免费无码看人 | 国产性生交xxxxx无码 | 成人综合网亚洲伊人 | 在线视频网站www色 | 欧美老熟妇乱xxxxx | 久久久久久九九精品久 | 一二三四社区在线中文视频 | 亚洲精品午夜无码电影网 | 亚洲精品久久久久中文第一幕 | 国产人成高清在线视频99最全资源 | 初尝人妻少妇中文字幕 | 色综合久久久无码中文字幕 | 亚洲精品久久久久久久久久久 | 欧美freesex黑人又粗又大 | 亚洲日韩av一区二区三区四区 | 亚洲国产欧美国产综合一区 | 性生交大片免费看l | 熟妇女人妻丰满少妇中文字幕 | 亚洲中文字幕成人无码 | 欧美日韩一区二区综合 | 国产国语老龄妇女a片 | 国产精品美女久久久久av爽李琼 | 午夜福利一区二区三区在线观看 | 国产亚洲欧美日韩亚洲中文色 | 免费观看又污又黄的网站 | 动漫av一区二区在线观看 | 久久综合给合久久狠狠狠97色 | 国产国语老龄妇女a片 | 十八禁视频网站在线观看 | 亚洲阿v天堂在线 | 丰满护士巨好爽好大乳 | 欧美性生交活xxxxxdddd | 亚洲gv猛男gv无码男同 | 国产精品美女久久久网av | 久久成人a毛片免费观看网站 | 极品嫩模高潮叫床 | 中文字幕无码乱人伦 | 色综合久久久无码网中文 | 小泽玛莉亚一区二区视频在线 | 激情内射日本一区二区三区 | 精品成在人线av无码免费看 | 无码人妻av免费一区二区三区 | 久久精品丝袜高跟鞋 | 成人性做爰aaa片免费看不忠 | 成人一区二区免费视频 | 亚洲精品美女久久久久久久 | 男女作爱免费网站 | 国产精品嫩草久久久久 | 国产情侣作爱视频免费观看 | 国产精品-区区久久久狼 | 玩弄少妇高潮ⅹxxxyw | 国产精品高潮呻吟av久久4虎 | 国产午夜亚洲精品不卡 | 色一情一乱一伦一区二区三欧美 | 天海翼激烈高潮到腰振不止 | аⅴ资源天堂资源库在线 | 三上悠亚人妻中文字幕在线 | 国产莉萝无码av在线播放 | 欧美乱妇无乱码大黄a片 | 人妻互换免费中文字幕 | 亚洲综合精品香蕉久久网 | а√资源新版在线天堂 | 露脸叫床粗话东北少妇 | 强伦人妻一区二区三区视频18 | 99在线 | 亚洲 | 图片小说视频一区二区 | 国产一区二区三区影院 | 亚洲第一无码av无码专区 | 中文字幕 亚洲精品 第1页 | 国产精品无码成人午夜电影 | 一区二区传媒有限公司 | 日本一区二区更新不卡 | 女人被男人爽到呻吟的视频 | 成 人影片 免费观看 | 国产人妻精品一区二区三区 | www国产亚洲精品久久网站 | 丰满少妇高潮惨叫视频 | 一本加勒比波多野结衣 | 国产精品高潮呻吟av久久4虎 | 国产艳妇av在线观看果冻传媒 | 午夜嘿嘿嘿影院 | 青草青草久热国产精品 | 亚洲国产精品毛片av不卡在线 | 性生交大片免费看女人按摩摩 | 精品一区二区三区波多野结衣 | 思思久久99热只有频精品66 | 国产精品亚洲а∨无码播放麻豆 | 丰满岳乱妇在线观看中字无码 | 99久久婷婷国产综合精品青草免费 | 无码国模国产在线观看 | 精品 日韩 国产 欧美 视频 | 中文无码精品a∨在线观看不卡 | 亚洲精品国产精品乱码不卡 | 伊人久久大香线蕉av一区二区 | 国产亚洲tv在线观看 | 国产又粗又硬又大爽黄老大爷视 | 激情人妻另类人妻伦 | 无码人妻丰满熟妇区毛片18 | 少妇被粗大的猛进出69影院 | 伦伦影院午夜理论片 | 97久久超碰中文字幕 | 久久久久久久女国产乱让韩 | 欧美人与禽猛交狂配 | 夜夜躁日日躁狠狠久久av | www成人国产高清内射 | 国产在线无码精品电影网 | 无码av中文字幕免费放 | 伦伦影院午夜理论片 | 免费乱码人妻系列无码专区 | 成熟女人特级毛片www免费 | 国产人妻大战黑人第1集 | 欧美黑人巨大xxxxx | 对白脏话肉麻粗话av | 亚洲国产精品毛片av不卡在线 | 精品久久久无码中文字幕 | 免费男性肉肉影院 | 香蕉久久久久久av成人 | 国产口爆吞精在线视频 | 久久精品国产日本波多野结衣 | 一本加勒比波多野结衣 | 国产欧美亚洲精品a | 377p欧洲日本亚洲大胆 | 婷婷六月久久综合丁香 | 桃花色综合影院 | 国产卡一卡二卡三 | 国产猛烈高潮尖叫视频免费 | 欧美人与动性行为视频 | 99精品无人区乱码1区2区3区 | av在线亚洲欧洲日产一区二区 | 国内综合精品午夜久久资源 | 亚洲中文字幕在线无码一区二区 | 少妇被黑人到高潮喷出白浆 | av香港经典三级级 在线 | 少妇人妻偷人精品无码视频 | 高潮喷水的毛片 | 国内精品九九久久久精品 | 桃花色综合影院 | 国产又粗又硬又大爽黄老大爷视 | 无人区乱码一区二区三区 | 熟妇人妻无乱码中文字幕 | 内射后入在线观看一区 | 国产片av国语在线观看 | 色综合久久久久综合一本到桃花网 | 欧美黑人性暴力猛交喷水 | 天天躁日日躁狠狠躁免费麻豆 | 18无码粉嫩小泬无套在线观看 | 亚洲精品一区二区三区四区五区 | 毛片内射-百度 | 成人试看120秒体验区 | 男女下面进入的视频免费午夜 | 成人亚洲精品久久久久 | 久久精品人妻少妇一区二区三区 | 欧美性生交活xxxxxdddd | 国产日产欧产精品精品app | 性色欲网站人妻丰满中文久久不卡 | 亚洲男女内射在线播放 | 强辱丰满人妻hd中文字幕 | а√天堂www在线天堂小说 | 日本丰满熟妇videos | 亚洲国产精品久久久久久 | 成年美女黄网站色大免费全看 | 精品国产福利一区二区 | 强开小婷嫩苞又嫩又紧视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 欧美日本精品一区二区三区 | 亚洲另类伦春色综合小说 | 婷婷综合久久中文字幕蜜桃三电影 | 久久国产自偷自偷免费一区调 | 精品偷拍一区二区三区在线看 | 97无码免费人妻超级碰碰夜夜 | 久久99久久99精品中文字幕 | 欧美乱妇无乱码大黄a片 | 国产无遮挡吃胸膜奶免费看 | 人妻与老人中文字幕 | 国产 精品 自在自线 | 中文字幕人妻无码一区二区三区 | 精品一区二区三区无码免费视频 | 最新版天堂资源中文官网 | 嫩b人妻精品一区二区三区 | 国产成人综合色在线观看网站 | 婷婷色婷婷开心五月四房播播 | 黑森林福利视频导航 | 狠狠cao日日穞夜夜穞av | 99精品无人区乱码1区2区3区 | 久久久精品456亚洲影院 | 成熟女人特级毛片www免费 | 国产精品久免费的黄网站 | 亚洲国产午夜精品理论片 | 一区二区三区高清视频一 | 好男人社区资源 | 无码人妻精品一区二区三区不卡 | 无码精品人妻一区二区三区av | 亚洲精品无码人妻无码 | 国产人妻人伦精品 | 伊人久久大香线蕉午夜 | 亚洲自偷精品视频自拍 | 中文无码精品a∨在线观看不卡 | 国产精品18久久久久久麻辣 | 无码国模国产在线观看 | 亚洲小说春色综合另类 | 国产熟女一区二区三区四区五区 | 欧美一区二区三区视频在线观看 | 永久免费精品精品永久-夜色 | 无遮无挡爽爽免费视频 | 欧美精品免费观看二区 | 黑人巨大精品欧美黑寡妇 | 牲欲强的熟妇农村老妇女视频 | 东北女人啪啪对白 | 色婷婷香蕉在线一区二区 | 国产成人人人97超碰超爽8 | 日本乱偷人妻中文字幕 | 夫妻免费无码v看片 | 最新国产麻豆aⅴ精品无码 | 国产精品爱久久久久久久 | 国产日产欧产精品精品app | 欧美性猛交内射兽交老熟妇 | 特大黑人娇小亚洲女 | 曰韩无码二三区中文字幕 | 欧美成人免费全部网站 | 亚洲欧洲无卡二区视頻 | 国产av无码专区亚洲a∨毛片 | 一本久久a久久精品vr综合 | 麻豆国产97在线 | 欧洲 | 中文字幕 亚洲精品 第1页 | 国产精品人人爽人人做我的可爱 | 天堂亚洲2017在线观看 | 成年美女黄网站色大免费全看 | 1000部啪啪未满十八勿入下载 | 国产精品视频免费播放 | 国产精品免费大片 | 国产农村妇女高潮大叫 | 亚洲中文字幕久久无码 | 亚洲日本一区二区三区在线 | 国产两女互慰高潮视频在线观看 | 搡女人真爽免费视频大全 | 亚洲va欧美va天堂v国产综合 | 妺妺窝人体色www在线小说 | 中文字幕+乱码+中文字幕一区 | 精品国产精品久久一区免费式 | 一本加勒比波多野结衣 | 中文字幕色婷婷在线视频 | 久久精品中文字幕一区 | 午夜熟女插插xx免费视频 | 亚洲熟妇色xxxxx欧美老妇y | 国产三级久久久精品麻豆三级 | 久久久久久久女国产乱让韩 | 一区二区传媒有限公司 | 中文字幕av无码一区二区三区电影 | 国产精品嫩草久久久久 | 无码任你躁久久久久久久 | 中文字幕av无码一区二区三区电影 | 亚洲日韩av片在线观看 | 波多野结衣高清一区二区三区 | 2019午夜福利不卡片在线 | 精品国产麻豆免费人成网站 | 国产热a欧美热a在线视频 | 国产成人无码a区在线观看视频app | 亚洲乱码国产乱码精品精 | 最近的中文字幕在线看视频 | 天天拍夜夜添久久精品大 | 亚洲一区二区三区播放 | 亚洲国产精品久久久天堂 | 又大又硬又爽免费视频 | 免费观看又污又黄的网站 | 国产av无码专区亚洲awww | 波多野结衣高清一区二区三区 | 日日躁夜夜躁狠狠躁 | 亚洲国产精品成人久久蜜臀 | 老太婆性杂交欧美肥老太 | 国产精品高潮呻吟av久久 | 国产无遮挡又黄又爽又色 | 嫩b人妻精品一区二区三区 | 久久天天躁夜夜躁狠狠 | 久久综合给久久狠狠97色 | 欧美国产亚洲日韩在线二区 | 青草青草久热国产精品 | 亚洲综合另类小说色区 | 国产无套内射久久久国产 | 亚洲男人av天堂午夜在 | 老子影院午夜精品无码 | 亚洲欧美国产精品专区久久 | 动漫av一区二区在线观看 | 国产精品香蕉在线观看 | 午夜性刺激在线视频免费 | 欧美日韩一区二区三区自拍 | 久久久精品欧美一区二区免费 | 在线a亚洲视频播放在线观看 | 人妻少妇被猛烈进入中文字幕 | 亚洲国产欧美在线成人 | 高潮毛片无遮挡高清免费视频 | 露脸叫床粗话东北少妇 | 一本色道久久综合狠狠躁 | 男女猛烈xx00免费视频试看 | 玩弄人妻少妇500系列视频 | 国产精品多人p群无码 | 国产极品视觉盛宴 | 免费观看激色视频网站 | 亚洲日本va午夜在线电影 | 99久久久国产精品无码免费 | 中国女人内谢69xxxx | 亚洲综合伊人久久大杳蕉 | 丰满肥臀大屁股熟妇激情视频 | 全黄性性激高免费视频 | 久久人人爽人人人人片 | 在线а√天堂中文官网 | 一本久久a久久精品vr综合 | 欧美日韩人成综合在线播放 | 国产九九九九九九九a片 | 波多野结衣av一区二区全免费观看 | 国产真实伦对白全集 | 97久久国产亚洲精品超碰热 | 亚洲人成影院在线无码按摩店 | 国产激情精品一区二区三区 | 成人亚洲精品久久久久 | 精品久久久中文字幕人妻 | 亚洲一区二区三区四区 | 国产精品亚洲lv粉色 | 精品无人区无码乱码毛片国产 | 免费乱码人妻系列无码专区 | 中文精品久久久久人妻不卡 | 国产精品人妻一区二区三区四 | 国内揄拍国内精品人妻 | 日韩欧美群交p片內射中文 | 一本大道久久东京热无码av | 色狠狠av一区二区三区 | 成人性做爰aaa片免费看不忠 | 亚洲 高清 成人 动漫 | 亚拍精品一区二区三区探花 | 欧美激情一区二区三区成人 | 少妇被黑人到高潮喷出白浆 | 国产亚洲精品久久久闺蜜 | 精品熟女少妇av免费观看 | 国产又爽又黄又刺激的视频 | 国产精品久久久久久久9999 | 人人妻人人澡人人爽人人精品浪潮 | 久久久婷婷五月亚洲97号色 | 欧美人与善在线com | 欧美猛少妇色xxxxx | 极品尤物被啪到呻吟喷水 | 奇米影视7777久久精品 | 久久精品国产亚洲精品 | 中国大陆精品视频xxxx | 日本www一道久久久免费榴莲 | 久久久无码中文字幕久... | 亚洲成av人片天堂网无码】 | 97无码免费人妻超级碰碰夜夜 | 成人一区二区免费视频 | 性生交片免费无码看人 | 国产性生大片免费观看性 | 嫩b人妻精品一区二区三区 | 国产另类ts人妖一区二区 | 亚洲欧洲中文日韩av乱码 | 熟女俱乐部五十路六十路av | 国产成人av免费观看 | 亚洲欧美精品伊人久久 | 97精品人妻一区二区三区香蕉 | 国産精品久久久久久久 | 国产做国产爱免费视频 | 久久精品一区二区三区四区 | 伊人久久大香线蕉av一区二区 | 少妇无码吹潮 | 国产亚洲日韩欧美另类第八页 | 99久久精品日本一区二区免费 | 亚洲爆乳无码专区 | 国産精品久久久久久久 | 成人欧美一区二区三区 | 精品欧美一区二区三区久久久 | 无码一区二区三区在线观看 | a国产一区二区免费入口 | 最新版天堂资源中文官网 | 亚洲精品美女久久久久久久 | 久久久国产一区二区三区 | 欧洲熟妇色 欧美 | 久久综合九色综合欧美狠狠 | 少妇高潮一区二区三区99 | 午夜无码区在线观看 | 午夜福利试看120秒体验区 | 人人妻人人澡人人爽欧美一区九九 | 最新版天堂资源中文官网 | 久久99热只有频精品8 | 免费国产成人高清在线观看网站 | 日韩精品无码一区二区中文字幕 | 国产一区二区三区四区五区加勒比 | 玩弄人妻少妇500系列视频 | 欧美真人作爱免费视频 | 在线欧美精品一区二区三区 | 成人试看120秒体验区 | 久久人人爽人人爽人人片ⅴ | 国产精品第一区揄拍无码 | 亚洲gv猛男gv无码男同 | 性做久久久久久久久 | 日日摸天天摸爽爽狠狠97 | 久激情内射婷内射蜜桃人妖 | 国产片av国语在线观看 | 最新国产乱人伦偷精品免费网站 | 欧美精品一区二区精品久久 | 亚洲中文无码av永久不收费 | 亚洲国产精品久久久久久 | 国产国语老龄妇女a片 | 国产成人一区二区三区别 | 久久国产精品偷任你爽任你 | 无码乱肉视频免费大全合集 | 波多野结衣av一区二区全免费观看 | 欧美国产日韩久久mv | 老司机亚洲精品影院 | 亚洲精品一区二区三区婷婷月 | 国产精品久久国产精品99 | 久久aⅴ免费观看 | 丰满少妇人妻久久久久久 | 亚洲区小说区激情区图片区 | 久久精品无码一区二区三区 | 老熟妇仑乱视频一区二区 | 久久久久久亚洲精品a片成人 | 日韩精品无码一区二区中文字幕 | 激情国产av做激情国产爱 | 亚洲色无码一区二区三区 | 国产色视频一区二区三区 | 人人澡人人妻人人爽人人蜜桃 | 少妇性l交大片 | 成人欧美一区二区三区黑人 | 日本精品人妻无码77777 天堂一区人妻无码 | 麻豆av传媒蜜桃天美传媒 | 人人妻人人澡人人爽人人精品 | 久久视频在线观看精品 | 日韩精品无码一区二区中文字幕 | 综合人妻久久一区二区精品 | 日韩精品无码免费一区二区三区 | 日本一区二区更新不卡 | 亚洲精品久久久久久久久久久 | 牲欲强的熟妇农村老妇女 | 性开放的女人aaa片 | 3d动漫精品啪啪一区二区中 | 亚洲欧美综合区丁香五月小说 | 人妻无码αv中文字幕久久琪琪布 | 欧美老熟妇乱xxxxx | 成在人线av无码免费 | 丰满人妻被黑人猛烈进入 | 水蜜桃亚洲一二三四在线 | 2020久久超碰国产精品最新 | 桃花色综合影院 | 牲欲强的熟妇农村老妇女视频 | 强辱丰满人妻hd中文字幕 | 久久综合色之久久综合 | 久久久无码中文字幕久... | 国产精品久久久av久久久 | 人妻尝试又大又粗久久 | 三上悠亚人妻中文字幕在线 | 亚洲精品中文字幕久久久久 | 18禁黄网站男男禁片免费观看 | 成熟人妻av无码专区 | 日韩少妇白浆无码系列 | 久精品国产欧美亚洲色aⅴ大片 | 中文字幕+乱码+中文字幕一区 | 天堂久久天堂av色综合 | 人妻人人添人妻人人爱 | 亚洲精品国产精品乱码视色 | 男女作爱免费网站 | 久久久国产精品无码免费专区 | 香港三级日本三级妇三级 | 风流少妇按摩来高潮 | 欧美亚洲日韩国产人成在线播放 | 色一情一乱一伦 | 欧美 日韩 人妻 高清 中文 | 波多野结衣高清一区二区三区 | 亚洲日韩中文字幕在线播放 | 内射后入在线观看一区 | 精品久久久久久亚洲精品 | 少妇一晚三次一区二区三区 | 少妇高潮喷潮久久久影院 | 亚洲а∨天堂久久精品2021 | 色婷婷av一区二区三区之红樱桃 | 亚洲乱码中文字幕在线 | 性色欲情网站iwww九文堂 | 国产精品资源一区二区 | 欧美第一黄网免费网站 | 99久久久国产精品无码免费 | 久久国产精品萌白酱免费 | 日本高清一区免费中文视频 | 99久久久国产精品无码免费 | 亚洲日本va中文字幕 | 国产精品久久久久久久影院 | 乱中年女人伦av三区 | 国产亚洲精品精品国产亚洲综合 | 强奷人妻日本中文字幕 | 377p欧洲日本亚洲大胆 | 牲交欧美兽交欧美 | 性欧美videos高清精品 | 在线а√天堂中文官网 | 少妇性俱乐部纵欲狂欢电影 | 夜夜躁日日躁狠狠久久av | 日本护士xxxxhd少妇 | 国内丰满熟女出轨videos | 婷婷色婷婷开心五月四房播播 | 99久久久无码国产精品免费 | 成人精品视频一区二区 | 国产疯狂伦交大片 | 精品一区二区三区无码免费视频 | 国产精品第一区揄拍无码 | 麻豆国产人妻欲求不满 | 一本大道伊人av久久综合 | 国产精品18久久久久久麻辣 | 国产偷抇久久精品a片69 | 1000部夫妻午夜免费 | 中文无码成人免费视频在线观看 | 狠狠亚洲超碰狼人久久 | 成在人线av无码免费 | 欧美熟妇另类久久久久久多毛 | 欧美色就是色 | 欧美精品无码一区二区三区 | 国产精品久久久 | 国产免费观看黄av片 | 久久97精品久久久久久久不卡 | 国产成人亚洲综合无码 | 亚洲精品一区二区三区婷婷月 | 成人试看120秒体验区 | 久久亚洲中文字幕无码 | 少妇高潮一区二区三区99 | 国产偷自视频区视频 | 国产无遮挡吃胸膜奶免费看 | 日韩无套无码精品 | 性欧美大战久久久久久久 | 人人妻人人澡人人爽人人精品浪潮 | 中文字幕av伊人av无码av | 亚洲综合精品香蕉久久网 | 国产婷婷色一区二区三区在线 | 蜜桃视频插满18在线观看 | 97精品国产97久久久久久免费 | 无码播放一区二区三区 | 在线成人www免费观看视频 | 天堂一区人妻无码 | 久久久久久亚洲精品a片成人 | 高潮毛片无遮挡高清免费 | 欧美精品在线观看 | 亚洲午夜久久久影院 | 国产超碰人人爽人人做人人添 | 国产午夜福利亚洲第一 | 精品aⅴ一区二区三区 | 中文字幕人妻无码一区二区三区 | 风流少妇按摩来高潮 | 少女韩国电视剧在线观看完整 | 在线播放亚洲第一字幕 | 青春草在线视频免费观看 | 国产97在线 | 亚洲 | 1000部啪啪未满十八勿入下载 | 久久久亚洲欧洲日产国码αv | 亚洲综合无码久久精品综合 | 少妇太爽了在线观看 | 人妻天天爽夜夜爽一区二区 | 少妇人妻大乳在线视频 | a在线观看免费网站大全 | 麻花豆传媒剧国产免费mv在线 | 亚洲日韩av一区二区三区四区 | 国内综合精品午夜久久资源 | 日韩 欧美 动漫 国产 制服 | 丰满少妇女裸体bbw | 免费国产成人高清在线观看网站 | 久久久久亚洲精品男人的天堂 | 国产香蕉97碰碰久久人人 | 国产成人精品一区二区在线小狼 | 噜噜噜亚洲色成人网站 | 真人与拘做受免费视频一 | 少妇无码一区二区二三区 | 黑人玩弄人妻中文在线 | 欧美丰满熟妇xxxx性ppx人交 | 国产另类ts人妖一区二区 | 成人女人看片免费视频放人 | 国产乱人偷精品人妻a片 | 色婷婷av一区二区三区之红樱桃 | 成人免费视频视频在线观看 免费 | 国产成人一区二区三区在线观看 | 大色综合色综合网站 | 日韩欧美中文字幕公布 | 丰满岳乱妇在线观看中字无码 | 人妻夜夜爽天天爽三区 | 国产亚洲人成a在线v网站 | 精品国偷自产在线视频 | 久久久久成人片免费观看蜜芽 | 日本一卡2卡3卡四卡精品网站 | 中文亚洲成a人片在线观看 | 永久黄网站色视频免费直播 | 国产香蕉尹人视频在线 | 色婷婷综合中文久久一本 | 人人妻人人澡人人爽人人精品 | 国产精品怡红院永久免费 | 亚洲成熟女人毛毛耸耸多 | 午夜精品久久久久久久 | 亚洲日韩乱码中文无码蜜桃臀网站 | 色一情一乱一伦一视频免费看 | 国产麻豆精品一区二区三区v视界 | 性色欲情网站iwww九文堂 | 午夜精品久久久内射近拍高清 | 国产国语老龄妇女a片 | 亲嘴扒胸摸屁股激烈网站 | 高潮毛片无遮挡高清免费视频 | 久久久av男人的天堂 | 日本又色又爽又黄的a片18禁 | 国产在线精品一区二区三区直播 | 秋霞成人午夜鲁丝一区二区三区 | 夜夜躁日日躁狠狠久久av | 国产精品无码mv在线观看 | 国产熟女一区二区三区四区五区 | 国产精品.xx视频.xxtv | 日产精品高潮呻吟av久久 | 国产在线一区二区三区四区五区 | 噜噜噜亚洲色成人网站 | 午夜男女很黄的视频 | 性生交片免费无码看人 | 亚洲日韩一区二区三区 | av无码不卡在线观看免费 | 最近的中文字幕在线看视频 | 免费视频欧美无人区码 | 欧美精品无码一区二区三区 | 999久久久国产精品消防器材 | 无码精品国产va在线观看dvd | 中文字幕人妻丝袜二区 | 99精品视频在线观看免费 | 日本熟妇大屁股人妻 | 亚洲国产精品成人久久蜜臀 | 亚洲精品国偷拍自产在线观看蜜桃 | 一本大道伊人av久久综合 | 99久久久无码国产精品免费 | 精品国产aⅴ无码一区二区 | 国产内射爽爽大片视频社区在线 | 无码吃奶揉捏奶头高潮视频 | 初尝人妻少妇中文字幕 | 国产成人无码专区 | 青草青草久热国产精品 | 亚洲 日韩 欧美 成人 在线观看 | 日韩av无码一区二区三区不卡 | 国产免费久久精品国产传媒 | 人人妻人人澡人人爽精品欧美 | 国产电影无码午夜在线播放 | 日韩成人一区二区三区在线观看 | 亚洲午夜久久久影院 | 久久综合给久久狠狠97色 | 国产麻豆精品一区二区三区v视界 | 一二三四社区在线中文视频 | 亚洲国产欧美国产综合一区 | 国产精品久久久av久久久 | 西西人体www44rt大胆高清 | 宝宝好涨水快流出来免费视频 | 中文字幕无码免费久久9一区9 | 国产精品香蕉在线观看 | 久久久国产一区二区三区 | 国产97在线 | 亚洲 | 最新国产乱人伦偷精品免费网站 | 日韩人妻无码中文字幕视频 | 国内精品人妻无码久久久影院 | 欧美 日韩 亚洲 在线 | 午夜福利试看120秒体验区 | 天海翼激烈高潮到腰振不止 | 中文字幕无码av波多野吉衣 | 人妻天天爽夜夜爽一区二区 | 无码福利日韩神码福利片 | 人妻无码αv中文字幕久久琪琪布 | 色婷婷香蕉在线一区二区 | 日日摸夜夜摸狠狠摸婷婷 | 日本欧美一区二区三区乱码 | 97精品国产97久久久久久免费 | 欧美兽交xxxx×视频 | 97精品国产97久久久久久免费 | 亚洲 激情 小说 另类 欧美 | 色 综合 欧美 亚洲 国产 | 精品久久久无码中文字幕 | 亚洲s色大片在线观看 | 国产成人综合美国十次 | 人人爽人人澡人人人妻 | 欧美变态另类xxxx | 在线观看国产午夜福利片 | 精品人人妻人人澡人人爽人人 | 国产av一区二区精品久久凹凸 | 青青草原综合久久大伊人精品 | 欧美日韩在线亚洲综合国产人 | 无码人妻出轨黑人中文字幕 | 亚洲国产精品久久久久久 | 成人免费视频一区二区 | 高潮毛片无遮挡高清免费视频 | 中文字幕无码人妻少妇免费 | 丰满肥臀大屁股熟妇激情视频 | 无码免费一区二区三区 | 无码午夜成人1000部免费视频 | 国产一区二区三区日韩精品 | 日韩av无码一区二区三区 | 一区二区三区乱码在线 | 欧洲 | 5858s亚洲色大成网站www | 色偷偷人人澡人人爽人人模 | 丁香花在线影院观看在线播放 | 久久99精品久久久久久动态图 | 中文字幕无线码免费人妻 | 蜜桃臀无码内射一区二区三区 | 亚洲s色大片在线观看 | 性欧美牲交xxxxx视频 | 国产明星裸体无码xxxx视频 | 欧美放荡的少妇 | 国产成人综合在线女婷五月99播放 | 国产精品人妻一区二区三区四 | 国产成人精品视频ⅴa片软件竹菊 | 男女作爱免费网站 | aⅴ在线视频男人的天堂 | 日本爽爽爽爽爽爽在线观看免 | 久久亚洲国产成人精品性色 | 日韩精品一区二区av在线 | 日日摸天天摸爽爽狠狠97 | 久久精品99久久香蕉国产色戒 | 亚洲国产欧美日韩精品一区二区三区 | 中文毛片无遮挡高清免费 | 色欲久久久天天天综合网精品 | 人人妻人人澡人人爽人人精品 | 高潮毛片无遮挡高清免费 | 中文字幕无码日韩欧毛 | 大地资源网第二页免费观看 | 人妻少妇精品无码专区动漫 | 欧美国产日韩亚洲中文 | 精品久久久久久亚洲精品 | 久久综合色之久久综合 | 久久99精品国产麻豆蜜芽 | 国产成人精品三级麻豆 | 性欧美牲交xxxxx视频 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产精品久久福利网站 | 人妻尝试又大又粗久久 | 一区二区三区高清视频一 | 久久久精品456亚洲影院 | 亚洲精品成人福利网站 | 牲欲强的熟妇农村老妇女 | 人妻尝试又大又粗久久 | 男女猛烈xx00免费视频试看 | 少妇性俱乐部纵欲狂欢电影 | 丰满岳乱妇在线观看中字无码 | 人人澡人人透人人爽 | 亚洲国产一区二区三区在线观看 | 综合人妻久久一区二区精品 | 国产午夜亚洲精品不卡 | 荫蒂被男人添的好舒服爽免费视频 | 人人爽人人爽人人片av亚洲 | 欧美肥老太牲交大战 | 亚洲а∨天堂久久精品2021 | 欧美三级不卡在线观看 | 在教室伦流澡到高潮hnp视频 | 在线成人www免费观看视频 | 国产日产欧产精品精品app | 伊人久久大香线蕉亚洲 | 国产亚洲tv在线观看 | 国产人妻精品午夜福利免费 | 国产成人久久精品流白浆 | 99麻豆久久久国产精品免费 | 人妻少妇精品无码专区二区 | 国产精品高潮呻吟av久久 | 欧洲熟妇精品视频 | 天天爽夜夜爽夜夜爽 | 亚洲欧美国产精品久久 | 天堂亚洲免费视频 | 激情爆乳一区二区三区 | 性生交大片免费看l | 狂野欧美激情性xxxx | 亚洲欧美国产精品专区久久 | 人妻少妇精品无码专区动漫 | 亚洲午夜福利在线观看 | 亚洲欧美中文字幕5发布 | 国产另类ts人妖一区二区 | 99麻豆久久久国产精品免费 | 午夜肉伦伦影院 | 亚洲男人av天堂午夜在 | 亚洲日本在线电影 | 天干天干啦夜天干天2017 | 窝窝午夜理论片影院 | 丰满肥臀大屁股熟妇激情视频 | 日日碰狠狠躁久久躁蜜桃 | 国产精品无码mv在线观看 | 麻豆md0077饥渴少妇 | 国产精品永久免费视频 | 亚洲а∨天堂久久精品2021 | 亚洲无人区午夜福利码高清完整版 | 午夜福利一区二区三区在线观看 | 狂野欧美性猛xxxx乱大交 | 欧美老熟妇乱xxxxx | 精品久久久无码人妻字幂 | 131美女爱做视频 | 六月丁香婷婷色狠狠久久 | 久久无码人妻影院 | 中文精品无码中文字幕无码专区 | 亚洲精品久久久久久一区二区 | 日日麻批免费40分钟无码 | 未满小14洗澡无码视频网站 | 高中生自慰www网站 | 国产三级精品三级男人的天堂 | 国产又粗又硬又大爽黄老大爷视 | 国产黑色丝袜在线播放 | 亚洲色欲色欲欲www在线 | 97夜夜澡人人爽人人喊中国片 | 欧美日韩一区二区三区自拍 | 国产高清av在线播放 | 国产亚洲精品久久久ai换 | 国产欧美精品一区二区三区 | 丰满岳乱妇在线观看中字无码 | 女人被男人爽到呻吟的视频 | 国产精品.xx视频.xxtv | 国产网红无码精品视频 | 女人被爽到呻吟gif动态图视看 | 九月婷婷人人澡人人添人人爽 | 日本va欧美va欧美va精品 | 宝宝好涨水快流出来免费视频 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲综合久久一区二区 | 欧美日韩人成综合在线播放 | 国产suv精品一区二区五 | 男人的天堂2018无码 | 欧美成人午夜精品久久久 | 精品国产国产综合精品 | 国产精品亚洲а∨无码播放麻豆 | 人妻少妇被猛烈进入中文字幕 | 久久久久久国产精品无码下载 | 乌克兰少妇性做爰 | 国产亚洲精品久久久闺蜜 | 亚洲精品www久久久 | 人妻少妇精品无码专区二区 | 亚洲人成无码网www | 亚洲日韩精品欧美一区二区 | 日韩精品a片一区二区三区妖精 | 呦交小u女精品视频 | 色婷婷香蕉在线一区二区 | 久久精品无码一区二区三区 | 国产亚洲tv在线观看 | 亚洲午夜久久久影院 | 丁香啪啪综合成人亚洲 | 国产麻豆精品一区二区三区v视界 | 中文字幕人妻丝袜二区 | 欧美自拍另类欧美综合图片区 | 久久午夜无码鲁丝片 | 无码毛片视频一区二区本码 | 亚洲精品国偷拍自产在线麻豆 | 亚洲综合无码久久精品综合 | 亚洲gv猛男gv无码男同 | 夜夜高潮次次欢爽av女 | 性色欲网站人妻丰满中文久久不卡 | 午夜丰满少妇性开放视频 | 激情爆乳一区二区三区 | 国产人妻久久精品二区三区老狼 | 99久久精品无码一区二区毛片 | 无码av岛国片在线播放 | 国产午夜无码视频在线观看 | 成人无码精品1区2区3区免费看 | 大色综合色综合网站 | 网友自拍区视频精品 | 少妇无套内谢久久久久 | 国产极品视觉盛宴 | 国产片av国语在线观看 | 国产特级毛片aaaaaa高潮流水 | 永久免费观看美女裸体的网站 | 国产精品a成v人在线播放 | 少妇高潮喷潮久久久影院 | 亚洲日韩一区二区 | 国产成人一区二区三区在线观看 | 国产精品美女久久久久av爽李琼 | 啦啦啦www在线观看免费视频 | 久久国产精品_国产精品 | 亚洲成色www久久网站 | 国产午夜无码精品免费看 | 国产高潮视频在线观看 | 熟妇人妻中文av无码 | 亚洲国产av精品一区二区蜜芽 | 国产人妖乱国产精品人妖 | 久久伊人色av天堂九九小黄鸭 | 女高中生第一次破苞av | 国产激情艳情在线看视频 | 精品亚洲韩国一区二区三区 | 国产亚洲精品久久久ai换 | 国产精品igao视频网 | av无码不卡在线观看免费 | 国产在线精品一区二区三区直播 | 国产sm调教视频在线观看 | 天天综合网天天综合色 | 性色av无码免费一区二区三区 | 国产亚洲精品久久久久久久久动漫 | 婷婷五月综合缴情在线视频 | 国产av无码专区亚洲a∨毛片 | 欧美亚洲国产一区二区三区 | 国产精品久久久久影院嫩草 | 国产精品无码永久免费888 | 欧美人妻一区二区三区 | 午夜理论片yy44880影院 | 欧美人与善在线com | 久久综合给久久狠狠97色 | 亚洲一区二区三区无码久久 | 无套内谢的新婚少妇国语播放 | 精品无人区无码乱码毛片国产 | 亚洲精品国产a久久久久久 | 欧美兽交xxxx×视频 | 久精品国产欧美亚洲色aⅴ大片 | 日韩欧美中文字幕公布 | 久久综合给合久久狠狠狠97色 | 中文字幕中文有码在线 | 国产精品igao视频网 | 亚洲一区二区三区香蕉 | 强开小婷嫩苞又嫩又紧视频 | 国产精品丝袜黑色高跟鞋 | 扒开双腿吃奶呻吟做受视频 | 久久aⅴ免费观看 | 日本va欧美va欧美va精品 | 人人超人人超碰超国产 | 久久 国产 尿 小便 嘘嘘 | 精品无码一区二区三区的天堂 | 在线精品亚洲一区二区 | 中文字幕人妻无码一夲道 | www国产亚洲精品久久网站 | 亚洲成色www久久网站 | 欧美35页视频在线观看 | 亚洲自偷自偷在线制服 | 日本欧美一区二区三区乱码 | 99久久人妻精品免费二区 | 四虎4hu永久免费 | 精品久久久无码人妻字幂 | 国产乱人无码伦av在线a | 少妇性l交大片欧洲热妇乱xxx | 少妇太爽了在线观看 | 国产熟妇高潮叫床视频播放 | 日日夜夜撸啊撸 | 国产日产欧产精品精品app | 免费无码一区二区三区蜜桃大 | 亚洲综合色区中文字幕 | 亚洲精品综合一区二区三区在线 | 久久久久久亚洲精品a片成人 | 久久亚洲a片com人成 | 亚洲乱码日产精品bd | 一本久久a久久精品亚洲 | 国产亚洲人成在线播放 | 免费观看又污又黄的网站 | 亚洲精品一区二区三区婷婷月 | 99久久精品午夜一区二区 | 亚洲国产精品美女久久久久 | 亚洲精品综合一区二区三区在线 | 国精产品一品二品国精品69xx | 老子影院午夜精品无码 | 亚洲精品一区三区三区在线观看 | 亚洲国产精品一区二区第一页 | 国产区女主播在线观看 | 亚洲中文字幕成人无码 | 无码人妻少妇伦在线电影 | 国产综合久久久久鬼色 | 国精品人妻无码一区二区三区蜜柚 | 久久亚洲精品成人无码 | 丰满少妇女裸体bbw | 免费看男女做好爽好硬视频 | 美女毛片一区二区三区四区 | 中文字幕人妻丝袜二区 | 日本护士毛茸茸高潮 | 免费视频欧美无人区码 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 中文字幕乱码亚洲无线三区 | 亚洲成av人片在线观看无码不卡 | 亚洲日韩中文字幕在线播放 | 欧美黑人性暴力猛交喷水 | 中文字幕人成乱码熟女app | 亚洲精品国产a久久久久久 | 中文字幕色婷婷在线视频 | 精品人人妻人人澡人人爽人人 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲成av人片天堂网无码】 | 久久久久免费看成人影片 | 99久久99久久免费精品蜜桃 | 日韩精品无码一区二区中文字幕 | 免费乱码人妻系列无码专区 | 久久精品中文字幕一区 | 国产成人精品三级麻豆 | 5858s亚洲色大成网站www | 日韩人妻无码一区二区三区久久99 | av在线亚洲欧洲日产一区二区 | 午夜精品久久久久久久久 | 欧美精品无码一区二区三区 | 婷婷五月综合缴情在线视频 | 精品国产青草久久久久福利 | 国产 精品 自在自线 | 日韩少妇内射免费播放 | 漂亮人妻洗澡被公强 日日躁 | 国产电影无码午夜在线播放 | 蜜桃臀无码内射一区二区三区 | 鲁鲁鲁爽爽爽在线视频观看 | 一二三四社区在线中文视频 | 在线观看国产一区二区三区 | 国产免费无码一区二区视频 | 乱人伦人妻中文字幕无码 | 国产精品第一国产精品 | 无人区乱码一区二区三区 | 黑人粗大猛烈进出高潮视频 | 欧美丰满熟妇xxxx性ppx人交 | 欧美 日韩 人妻 高清 中文 | 久久无码专区国产精品s | 蜜臀av在线播放 久久综合激激的五月天 | 色婷婷av一区二区三区之红樱桃 | 无码人妻黑人中文字幕 | 女人高潮内射99精品 | 4hu四虎永久在线观看 | 丝袜 中出 制服 人妻 美腿 | 国产精品va在线观看无码 | 日日碰狠狠丁香久燥 | 纯爱无遮挡h肉动漫在线播放 | 国产精品国产三级国产专播 | 亚洲天堂2017无码 | 日本乱偷人妻中文字幕 | 少妇无套内谢久久久久 | 高潮毛片无遮挡高清免费视频 | 亚洲中文字幕久久无码 | 亚洲精品美女久久久久久久 | av小次郎收藏 | 特级做a爰片毛片免费69 | 最近的中文字幕在线看视频 | 日本护士xxxxhd少妇 | 国产热a欧美热a在线视频 | 99久久无码一区人妻 | 欧美精品一区二区精品久久 | 久久久久国色av免费观看性色 | 久久 国产 尿 小便 嘘嘘 | 无人区乱码一区二区三区 | 奇米影视7777久久精品 | 人人妻人人藻人人爽欧美一区 | 久久zyz资源站无码中文动漫 | 精品一区二区不卡无码av | 狠狠色丁香久久婷婷综合五月 | 亚洲欧美色中文字幕在线 | 少妇人妻av毛片在线看 | 亚洲小说春色综合另类 | 国产精品久久久久久久影院 | 小鲜肉自慰网站xnxx | 久久久久久久女国产乱让韩 | 亚洲精品一区三区三区在线观看 | 在线观看欧美一区二区三区 | 日本va欧美va欧美va精品 | 久久久久久久人妻无码中文字幕爆 | 精品久久久久久人妻无码中文字幕 | 亚洲精品鲁一鲁一区二区三区 | 福利一区二区三区视频在线观看 | 99精品视频在线观看免费 | 国产九九九九九九九a片 | 澳门永久av免费网站 | 激情内射亚州一区二区三区爱妻 | 97夜夜澡人人爽人人喊中国片 | 国产成人无码区免费内射一片色欲 | 狂野欧美性猛xxxx乱大交 | 97夜夜澡人人爽人人喊中国片 | 熟妇人妻激情偷爽文 | 在线观看免费人成视频 | 久久综合久久自在自线精品自 | 亚洲gv猛男gv无码男同 | 久久99精品国产麻豆 | 亚洲精品欧美二区三区中文字幕 | 精品人妻人人做人人爽夜夜爽 | 377p欧洲日本亚洲大胆 | 欧美人与禽zoz0性伦交 | 久久五月精品中文字幕 | 福利一区二区三区视频在线观看 | 精品乱码久久久久久久 | 又粗又大又硬毛片免费看 | 国产亚洲美女精品久久久2020 | 无码国产乱人伦偷精品视频 | 国产人妻人伦精品 | 无码人中文字幕 | 成熟妇人a片免费看网站 | 国产97色在线 | 免 | 97久久超碰中文字幕 | 噜噜噜亚洲色成人网站 | 亚洲综合色区中文字幕 | 妺妺窝人体色www婷婷 | 99久久婷婷国产综合精品青草免费 | 免费观看的无遮挡av | 无码任你躁久久久久久久 | 人人爽人人澡人人高潮 | 精品久久久久久亚洲精品 | 国产精品丝袜黑色高跟鞋 | 天干天干啦夜天干天2017 | 中文毛片无遮挡高清免费 | 国产精品对白交换视频 | 久久久久久久女国产乱让韩 | 婷婷六月久久综合丁香 | 在线精品国产一区二区三区 | 精品aⅴ一区二区三区 | 天天av天天av天天透 | 99麻豆久久久国产精品免费 | 日日碰狠狠躁久久躁蜜桃 | 亚洲精品久久久久久久久久久 | 丰满少妇女裸体bbw | 精品偷拍一区二区三区在线看 | 强开小婷嫩苞又嫩又紧视频 | 全球成人中文在线 | 国产亚洲精品精品国产亚洲综合 | 久久精品视频在线看15 | 精品久久久久久人妻无码中文字幕 | 国产成人无码av片在线观看不卡 | 人人妻人人澡人人爽欧美一区 | 国产真实伦对白全集 | 中文字幕无码免费久久9一区9 | 欧洲vodafone精品性 | 日韩av激情在线观看 | 久久精品丝袜高跟鞋 | 日韩在线不卡免费视频一区 | 大地资源中文第3页 | 色欲人妻aaaaaaa无码 | 狠狠cao日日穞夜夜穞av | 亚洲成熟女人毛毛耸耸多 | 人人澡人摸人人添 | 久久zyz资源站无码中文动漫 | www成人国产高清内射 | 精品人妻中文字幕有码在线 | 欧洲熟妇精品视频 | 精品久久久久香蕉网 | 欧美成人午夜精品久久久 | 大地资源中文第3页 | 色五月丁香五月综合五月 | 日本xxxx色视频在线观看免费 | 国产成人无码午夜视频在线观看 | 少妇人妻av毛片在线看 | 国产精品99爱免费视频 | 欧美日韩一区二区免费视频 | ass日本丰满熟妇pics | 无码吃奶揉捏奶头高潮视频 | 乱人伦中文视频在线观看 | 国产情侣作爱视频免费观看 | 中文字幕+乱码+中文字幕一区 | 亚洲 激情 小说 另类 欧美 | 国产精品永久免费视频 | 丰满人妻翻云覆雨呻吟视频 | 无码帝国www无码专区色综合 | 欧美zoozzooz性欧美 | 精品国产精品久久一区免费式 | 一个人看的视频www在线 | 女人被男人躁得好爽免费视频 | 丝袜美腿亚洲一区二区 | 永久黄网站色视频免费直播 | 搡女人真爽免费视频大全 | 一本久道久久综合婷婷五月 | 77777熟女视频在线观看 а天堂中文在线官网 | 久久久久se色偷偷亚洲精品av | 噜噜噜亚洲色成人网站 | 亚洲色欲久久久综合网东京热 | 日日干夜夜干 | 欧美猛少妇色xxxxx | 成人片黄网站色大片免费观看 | 99精品久久毛片a片 | 亚洲精品成a人在线观看 | 少妇无码一区二区二三区 | 激情内射日本一区二区三区 | 少妇激情av一区二区 | 久久精品人妻少妇一区二区三区 | aa片在线观看视频在线播放 | 99re在线播放 | 51国偷自产一区二区三区 | 人妻少妇精品无码专区动漫 | 免费播放一区二区三区 | 欧美丰满熟妇xxxx性ppx人交 | 少妇邻居内射在线 | 国产精品无码mv在线观看 | 久久精品国产大片免费观看 | av无码不卡在线观看免费 | 中文字幕人妻无码一区二区三区 | 久久久久久久久888 | 欧美 丝袜 自拍 制服 另类 | 少妇性荡欲午夜性开放视频剧场 | 国产亚av手机在线观看 | 亚洲理论电影在线观看 | 人妻少妇被猛烈进入中文字幕 | 久久久久av无码免费网 | 大屁股大乳丰满人妻 | 国产精品无码成人午夜电影 | 99视频精品全部免费免费观看 | 色综合久久久无码网中文 | 人妻少妇精品久久 | 久久久国产一区二区三区 | av无码不卡在线观看免费 | 中文字幕av伊人av无码av | 亚洲精品一区二区三区大桥未久 | 国产精品办公室沙发 | 动漫av网站免费观看 | 国产精品久久久久影院嫩草 | 性生交片免费无码看人 | 国产人妻久久精品二区三区老狼 | 曰本女人与公拘交酡免费视频 | 日本精品少妇一区二区三区 | 中文无码伦av中文字幕 | 亚洲经典千人经典日产 | 97夜夜澡人人爽人人喊中国片 | 国精产品一品二品国精品69xx | 亚洲综合精品香蕉久久网 | 人人澡人人妻人人爽人人蜜桃 | 国精产品一品二品国精品69xx | 成人动漫在线观看 | 伊人久久大香线蕉av一区二区 | 午夜无码区在线观看 | 午夜精品久久久久久久 | 日本大香伊一区二区三区 | 亚洲日韩av一区二区三区四区 | 久久精品国产一区二区三区 | 无套内射视频囯产 | 中文字幕无码免费久久99 | 久久五月精品中文字幕 | 美女张开腿让人桶 | 国产精品igao视频网 | 精品aⅴ一区二区三区 | 成熟女人特级毛片www免费 | 日韩成人一区二区三区在线观看 | 日韩精品无码一本二本三本色 | 久久精品视频在线看15 | 中文字幕无码视频专区 | 免费男性肉肉影院 | 欧美三级a做爰在线观看 | 成人亚洲精品久久久久软件 | 特大黑人娇小亚洲女 | 欧美日韩在线亚洲综合国产人 | 亚洲国产精品无码一区二区三区 | 两性色午夜视频免费播放 | 色综合久久久无码网中文 | 5858s亚洲色大成网站www | 亚洲自偷自拍另类第1页 | 成人片黄网站色大片免费观看 | 东京一本一道一二三区 | 伊人久久大香线蕉av一区二区 | 青春草在线视频免费观看 | 樱花草在线播放免费中文 | 一本无码人妻在中文字幕免费 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 中文字幕人妻无码一区二区三区 | 好爽又高潮了毛片免费下载 | 国产精品久久久久久久影院 |