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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

thinking-in-java(11) 持有对象

發布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 thinking-in-java(11) 持有对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?【11.1】泛型和類型安全的容器

(1)ArrayList<Apple> 中尖括號括起來的是: 類型參數,它指定了這個容器實例可以保存的類型;


【荔枝:有泛型和沒有泛型的區別】

class Apple {private static long counter;private final long id = counter++;public long id() {return id;} } class Orange { } // 沒有泛型的 Apples 和 Oranges 類 public class ApplesAndOrangesWithoutGenerics {@SuppressWarnings("unchecked") // 禁止"不受檢查的異常"的警告信息public static void main(String[] args) {ArrayList apples = new ArrayList();for (int i = 0; i < 3; i++)apples.add(new Apple());apples.add(new Orange());for (int i = 0; i < apples.size(); i++)((Apple) apples.get(i)).id(); // 拋出運行時異常;不能把 Orange 強轉為 Apple的。} } //有泛型的 Apples 和 Oranges 類 public class ApplesAndOrangesWithGenerics {public static void main(String[] args) {ArrayList<Apple> apples = new ArrayList<Apple>();for (int i = 0; i < 3; i++)apples.add(new Apple());// apples.add(new Orange());for (int i = 0; i < apples.size(); i++)System.out.println(apples.get(i).id());// Using foreach:for (Apple c : apples)System.out.println(c.id());} }

2)編譯器阻止將 Orange 放置到 apples容器中, 它是一個編譯器錯誤,而不是運行時錯誤;


?【(向上轉型)泛型參數為 基類,可以添加子類對象。基類指針指向子類對象?!?/strong>

class GrannySmith extends Apple {} class Gala extends Apple {} class Fuji extends Apple {} class Braeburn extends Apple {}public class GenericsAndUpcasting {public static void main(String[] args) {// (向上轉型)泛型參數為 基類,可以添加子類對象?;愔羔樦赶蜃宇悓ο蟆rrayList<Apple> apples = new ArrayList<Apple>();apples.add(new GrannySmith()); // GrannySmith 是 Apple的子類apples.add(new Gala()); // Gala 是 Apple的子類apples.add(new Fuji()); // Fuji 是 Apple的子類apples.add(new Braeburn()); // Braeburn 是 Apple的子類for (Apple c : apples)System.out.println(c);} }

// 打印結果 chapter11.GrannySmith@2a139a55 // @ 后面的字符串是 對象散列碼的無符號16進制字符串;(Object.hashCode() 函數) chapter11.Gala@15db9742 chapter11.Fuji@6d06d69c chapter11.Braeburn@7852e922 【11.2】基本概念

1)java容器類類庫的用途是 保存對象,有兩種類型的容器;

容器1)Collection:一條記錄保存一個值;

List:必須按照插入的順序保存元素;(ArrayList ?LinkedList) 不管重復與否;

ArrayList:底層實現是數組,查詢速度快;

LinkedList: 底層實現是鏈表,刪除速度快;


Set:不能有重復元素且無序;

HashSet:通過哈希函數獲取函數,是最快的獲取元素的方式;元素的存儲順序看起來并無實際意義(或不關心元素的存儲順序);無序不重復HashSet,底層用HashMap.key 實現;

TreeSet:如果存儲順序重要;它按照比較結果升序保存對象;無序不重復TreeSet,底層用 TreeMap.key 實現;

LinkedHashSet:它按照元素被添加的順序保存對象;?底層用 LinkedHashMap.key 實現;


Queue: 只允許在容器的一端插入對象,并從另外一端移除對象;


容器2)Map:一條記錄保存兩個值,key值和value值,即鍵值對;

HashMap:沒有按照任何明顯的順序保存元素,且通過哈希查找算法保證了查找的快速;

TreeMap:按照比較結果的升序保存鍵;

LinkedHashMap:按照元素的插入順序保存鍵值對,同時還保留了HashMap的查詢速度;底層用? HashMap 實現;



2)Collection接口概括了序列的概念。一種存放一組對象的方式;(Collection 就是是一個對象數組);

// 簡單的容器操作實例 public class SimpleCollection {public static void main(String[] args) {//ArrayList間接實現了 Collection 接口Collection<Integer> c = new ArrayList<Integer>();for (int i = 0; i < 10; i++)c.add(i); // 自動裝箱for (Integer i : c)System.out.print(i + ", ");System.out.println("\n======");//HashSet間接實現了 Collection 接口c = new HashSet<Integer>();for (int i = 0; i < 10; i++)c.add(i); // 自動裝箱for (Integer i : c)System.out.print(i + ", ");} } // 類繼承結構如下: // ArrayList 的類結構層次 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable // AbstractList public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> // List public interface List<E> extends Collection<E> // HashSet 的類結構層次 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable // AbstractSet public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> // Set public interface Set<E> extends Collection<E> // AbstractCollection public abstract class AbstractCollection<E> implements Collection<E> // 打印結果: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ====== 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 3)所有 Collection 都可以用到 foreach 語法;


【11.3】添加一組元素

// 添加一組元素荔枝 public class AddingGroups {public static void main(String[] args) {// Arrays.asList() 接受一個數組或用 逗號分隔的元素列表 并轉換為一個 List對象.Collection<Integer> collection = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));Integer[] moreInts = { 6, 7, 8, 9, 10 };collection.addAll(Arrays.asList(moreInts));// Collections.addAll() 方法 達到同樣的效果.Collections.addAll(collection, 11, 12, 13, 14, 15);Collections.addAll(collection, moreInts);for(Integer i : collection) {System.out.print(i + ", ");}/* Arrays.asList()方法返回的是 ArrayList */List<Integer> list = Arrays.asList(16, 17, 18, 19, 20);list.set(1, 99); // OK -- modify an elementlist.add(21); // 報錯,因為潛在數組不會改變原有大小.} } // 打印結果: 拋出異常 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 6, 7, 8, 9, 10, Exception in thread "main" java.lang.UnsupportedOperationExceptionat java.util.AbstractList.add(AbstractList.java:148)at java.util.AbstractList.add(AbstractList.java:108)at chapter11.AddingGroups.main(AddingGroups.java:27) // Arrays.asList() 方法詳情@SafeVarargs@SuppressWarnings("varargs")public static <T> List<T> asList(T... a) {return new ArrayList<>(a);} // Arrays$ArrayList 內部類 /*** @serial include*/private static class ArrayList<E> extends AbstractList<E>implements RandomAccess, java.io.Serializable{private static final long serialVersionUID = -2764017481108945198L;private final E[] a;ArrayList(E[] array) {a = Objects.requireNonNull(array);}@Overridepublic int size() {return a.length;}@Overridepublic Object[] toArray() {return a.clone();}@Override@SuppressWarnings("unchecked")public <T> T[] toArray(T[] a) {int size = size();if (a.length < size)return Arrays.copyOf(this.a, size,(Class<? extends T[]>) a.getClass());System.arraycopy(this.a, 0, a, 0, size);if (a.length > size)a[size] = null;return a;}@Overridepublic E get(int index) {return a[index];}@Overridepublic E set(int index, E element) {E oldValue = a[index];a[index] = element;return oldValue;}@Overridepublic int indexOf(Object o) {E[] a = this.a;if (o == null) {for (int i = 0; i < a.length; i++)if (a[i] == null)return i;} else {for (int i = 0; i < a.length; i++)if (o.equals(a[i]))return i;}return -1;}@Overridepublic boolean contains(Object o) {return indexOf(o) != -1;}@Overridepublic Spliterator<E> spliterator() {return Spliterators.spliterator(a, Spliterator.ORDERED);}@Overridepublic void forEach(Consumer<? super E> action) {Objects.requireNonNull(action);for (E e : a) {action.accept(e);}}@Overridepublic void replaceAll(UnaryOperator<E> operator) {Objects.requireNonNull(operator);E[] a = this.a;for (int i = 0; i < a.length; i++) {a[i] = operator.apply(a[i]);}}@Overridepublic void sort(Comparator<? super E> c) {Arrays.sort(a, c);}} 【代碼解說】

(1)注意區分Collection的成員方法,即addAll() 方法 和 Collections.addAll() 類方法;(干貨——Collections.addAll() 類方法是添加元素的首選方式

(2)Collection.addAll() 成員方法只能接受另一個Collection對象作為參數,沒有 Arrays.asList() 和 Collections.addAll() 類方法靈活,后面的兩個方法都可以使用 可變參數列表

(3)可以直接把 Arrays.asList() 的輸出作為輸入, 但其輸出的數組是固定的,不能調整尺寸了;參見 Arrays.asList() 方法的內部調用詳情,它實際上實例化了 Arrays的內部類ArrayList 的一個實例并返回的,且ArrayList是基于數組的,該數組的大小是固定的;


【看個荔枝】

class Snow {} class Powder extends Snow {} class Light extends Powder {} class Heavy extends Powder {} class Crusty extends Snow {} class Slush extends Snow {}public class AsListInference {public static void main(String[] args) {/* Arrays.asList() 方法 產生大小固定的Arrays$ArrayList內部類實例 */List<Snow> snow1 = Arrays.asList(new Crusty(), new Slush(), new Powder()); System.out.println("===snow1===");for (int i = 0; i < snow1.size(); i++) {System.out.println(snow1.get(i));}/* Arrays.asList() 方法 產生大小固定的Arrays$ArrayList內部類實例 */List<Snow> snow2 = Arrays.asList(new Light(), new Heavy()); System.out.println("===snow2===");for (int i = 0; i < snow2.size(); i++) {System.out.println(snow2.get(i));}System.out.println(snow2.getClass().getSimpleName().toLowerCase()); // 輸出的是 arraylistList<Snow> snow3 = new ArrayList<>();/* 推薦用 Collections.addAll() 向 Collection實例中添加元素.( Collections.addAll() 是添加元素的首選方法) */Collections.addAll(snow3, new Light(), new Heavy()); // 向snow3容器添加 后面兩個元素;(可變參數列表)System.out.println("===snow3===");for (int i = 0; i < snow3.size(); i++) {System.out.println(snow3.get(i));}/* (插入了一條線索<Snow>) Arrays.asList() 方法 *//* 告訴 */List<Snow> snow4 = Arrays.<Snow> asList(new Light(), new Heavy()); System.out.println("===snow4===");for (int i = 0; i < snow4.size(); i++) {System.out.println(snow4.get(i));}} } // 打印結果: ===snow1=== chapter11.Crusty@2a139a55 chapter11.Slush@15db9742 chapter11.Powder@6d06d69c ===snow2=== chapter11.Light@7852e922 chapter11.Heavy@4e25154f arraylist snow2 = [chapter11.Light@7852e922, chapter11.Heavy@4e25154f] ===snow3=== chapter11.Light@70dea4e chapter11.Heavy@5c647e05 ===snow4=== chapter11.Light@33909752 chapter11.Heavy@55f96302

【11.4】容器的打印

// 常用容器打印荔枝 public class PrintingContainers {static Collection fill(Collection<String> collection) {collection.add("rat1");collection.add("cat2");collection.add("dog3");collection.add("dog3");return collection;}static Map fill(Map<String, String> map) {map.put("rat1", "Fuzzy");map.put("cat2", "Rags2");map.put("dog3", "Bosco3");map.put("dog3", "Spot3");return map;}public static void main(String[] args) {System.out.println("ArrayList = " + fill(new ArrayList<String>()));System.out.println("LinkedList = " + fill(new LinkedList<String>()));System.out.println("HashSet = " + fill(new HashSet<String>())); // 無序不重復HashSet,底層用HashMap.key 實現System.out.println("TreeSet = " + fill(new TreeSet<String>())); // 無序不重復TreeSet,底層用 TreeMap.key 實現;System.out.println("LinkedHashSet = " + fill(new LinkedHashSet<String>())); // 底層用 LinkedHashMap.key 實現;System.out.println("HashMap = " + fill(new HashMap<String, String>()));System.out.println("TreeMap = " + fill(new TreeMap<String, String>()));System.out.println("LinkedHashMap = " + fill(new LinkedHashMap<String, String>())); // 底層用 HashMap 實現} } // 常用容器的打印荔枝: ArrayList = [rat1, cat2, dog3, dog3] LinkedList = [rat1, cat2, dog3, dog3] HashSet = [cat2, dog3, rat1] TreeSet = [cat2, dog3, rat1] LinkedHashSet = [rat1, cat2, dog3] HashMap = {cat2=Rags2, dog3=Spot3, rat1=Fuzzy} TreeMap = {cat2=Rags2, dog3=Spot3, rat1=Fuzzy} LinkedHashMap = {rat1=Fuzzy, cat2=Rags2, dog3=Spot3}

【11.5】 List

1)ArrayList: 擅長于隨機訪問元素,但在List的中間插入和刪除元素時速度較慢;

2)LinkedList:擅長于 插入和刪除元素,但隨機訪問元素時速度較慢;

【荔枝-List方法列表】

// List 方法的荔枝 public class ListFeatures {public static void main(String[] args) {Random rand = new Random(47);List<Pet> pets = Pets.arrayList(7);print("1: " + pets);Hamster h = new Hamster();pets.add(h); // 添加元素,自動調整大小print("2: " + pets);print("3: " + pets.contains(h)); // 包含某個元素pets.remove(h); // 移除某個元素.Pet p = pets.get(2);print("4: " + p + " " + pets.indexOf(p)); // 元素的序號.Pet cymric = new Cymric();print("5: " + pets.indexOf(cymric)); // 查找元素的序號,沒有的話,返回-1print("6: " + pets.remove(cymric)); // 沒有該元素,移除的話,返回false// Must be the exact object:print("7: " + pets.remove(p)); // 移除成功print("8: " + pets);pets.add(3, new Mouse()); // Insert at an index, 在序列3上插入一個元素print("9: " + pets);List<Pet> sub = pets.subList(1, 4); // 截取子序列,包括1,不包括4print("10: subList = " + sub);print("10: " + pets.containsAll(sub)); // 是否包含子序列Collections.sort(sub); // In-place sort, 對元素排序print("11: sorted subList = " + sub);// Order is not important in containsAll():print("11: " + pets.containsAll(sub)); // 排序與否 不影響 包含關系Collections.shuffle(sub, rand); // 將元素序號打亂-shuffle-存儲print("12: shuffled subList = " + sub);print("12: " + pets.containsAll(sub)); // 打亂之后 還是 不 影響 包含關系List<Pet> copy = new ArrayList<Pet>(pets);sub = Arrays.asList(pets.get(1), pets.get(4));print("13: sub = " + sub);print("13: copy = " + copy);copy.retainAll(sub); // 求交集print("13: copy.retainAll(sub) 方法求交集并賦值給 copy, copy = " + copy);copy = new ArrayList<Pet>(pets); // 獲得一個全新的 拷貝。注意是全新。print("14: befor copy = " + copy);copy.remove(2); // Remove by index,移除序號為2上的元素print("14: after remove(2), copy = " + copy);print("15: before copy = " + copy);print("15: before sub = " + sub);copy.removeAll(sub); // 移除 copy中 copy 與 sub 的交集元素print("15: after copy.removeAll(sub)-補集: " + copy);copy.set(1, new Mouse()); // 修改某個序號上的元素print("16: copy.set(1, new Mouse())-修改某序號1上的元素, copy = " + copy);copy.addAll(2, sub); // 將子序列中的元素 從 給定序號 插入到 原始序列中print("17: copy.addAll(2, sub)-在序號2上插入sub子集 , copy = " + copy);print("18: pets.isEmpty() = " + pets.isEmpty());pets.clear(); // 刪除所有元素print("19: pets.clear(), pets = " + pets);print("20: pets.isEmpty() = " + pets.isEmpty()); // 序列是否為空pets.addAll(Pets.arrayList(4)); // collection實例的 addAll() 方法 添加元素print("21: after pets.addAll(Pets.arrayList(4)), pets = " + pets);Object[] o = pets.toArray(); // 列表轉為 數組print("22: after Object[] o = pets.toArray(), p[3] = " + o[3]);Pet[] array = new Pet[4];// array = (Pet[]) pets.toArray(); // pets.toArray(array); //print("23: after Pet[] array = new Pet[4], pets.toArray(array), array[3].id() = " + array[3].id());} }

1: [Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug] 2: [Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug, Hamster] 3: true 4: Cymric 2 5: -1 6: false 7: true 8: [Rat, Manx, Mutt, Pug, Cymric, Pug] 9: [Rat, Manx, Mutt, Mouse, Pug, Cymric, Pug] 10: subList = [Manx, Mutt, Mouse] 10: true 11: sorted subList = [Manx, Mouse, Mutt] 11: true 12: shuffled subList = [Mouse, Manx, Mutt] 12: true 13: sub = [Mouse, Pug] 13: copy = [Rat, Mouse, Manx, Mutt, Pug, Cymric, Pug] 13: copy.retainAll(sub) 方法求交集并賦值給 copy, copy = [Mouse, Pug] 14: befor copy = [Rat, Mouse, Manx, Mutt, Pug, Cymric, Pug] 14: after remove(2), copy = [Rat, Mouse, Mutt, Pug, Cymric, Pug] 15: before copy = [Rat, Mouse, Mutt, Pug, Cymric, Pug] 15: before sub = [Mouse, Pug] 15: after copy.removeAll(sub)-補集: [Rat, Mutt, Cymric, Pug] 16: copy.set(1, new Mouse())-修改某序號1上的元素, copy = [Rat, Mouse, Cymric, Pug] 17: copy.addAll(2, sub)-在序號2上插入sub子集 , copy = [Rat, Mouse, Mouse, Pug, Cymric, Pug] 18: pets.isEmpty() = false 19: pets.clear(), pets = [] 20: pets.isEmpty() = true 21: after pets.addAll(Pets.arrayList(4)), pets = [Manx, Cymric, Rat, EgyptianMau] 22: after Object[] o = pets.toArray(), p[3] = EgyptianMau 23: after Pet[] array = new Pet[4], pets.toArray(array), array[3].id() = 14

【代碼解說】

1)equals 方法的重要性: ?retainAll() ?removeAll() ?或 ?contains() ?或 indexof() ?或 remove() 等方法, 都需要用到 equals() 方法;

2)List 方法列表:

2.1)add方法:add(h) , ??add(3, new Mouse()), ?addAll(2, sub), ?

2.2)contains方法:contains(h),??containsAll(sub),

2.3)remove方法:?remove(h),?remove(2),list.removeAll(sub)-求補集方法=>list,??

2.4)get方法:?get(2),?

2.5)查找序號 indexof方法:??indexOf(p),?

2.6)求交集方法retainAll:copy.retainAll(sub)-交集,

2.7)修改元素方法set:?set(1, new Mouse())

2.8)子集方法subList() :???List<Pet> sub = pets.subList(1, 4), ??

2.9)是否為空 isEmpty() 方法:?pets.isEmpty();

2.10)List轉數組方法 toArray :?pets.toArray();

或?Pet[] array = new Pet[4];
// array = (Pet[]) pets.toArray(); //?
pets.toArray(array); //

2.12)清空List所有元素方法 clear:pets.clear(); // 刪除所有元素

2.11)其他方法:

Collections的排序方法sort:?Collections.sort(sub) ,?

Arrays.asList() 數組轉List方法: ??sub = Arrays.asList(pets.get(1), pets.get(4)),?

(Attention——List轉數組 和 數組轉List;交集方法和補集方法)


【11.6】迭代器

1)迭代器的目的: 遍歷并選擇序列中的對象,而不必關心該序列底層的結構;

2)如何遍歷?

iterator() 方法返回一個 Iterator 對象;

next() 方法獲的下一個元素;

hasNext() 檢查序列中是否還有元素;

remove() 把迭代器返回的元素刪除;

【迭代器的荔枝】Iterator 僅能單向移動

// 遍歷 List 等容器的 三種方式 public class SimpleIteration {public static void main(String[] args) {List<Pet> pets = Pets.arrayList(12);Iterator<Pet> it = pets.iterator(); // 迭代器對象while (it.hasNext()) { // 是否還有元素 Pet p = it.next(); // 獲取下一個元素System.out.print(p.id() + ":" + p + " ");}System.out.println();for (Pet p : pets) // foreach 循環System.out.print(p.id() + ":" + p + " ");System.out.println();it = pets.iterator();for (int i = 0; i < 6; i++) { // for 循環it.next();it.remove(); // 調用 remove() 方法前,必須先 調用 next() 元素;}System.out.println(pets); // 輸出 剩下的6個元素,因為當前的游標在 序號6那個位置} } // 打印結果: 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 8:Cymric 9:Rat 10:EgyptianMau 11:Hamster 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 8:Cymric 9:Rat 10:EgyptianMau 11:Hamster [Pug, Manx, Cymric, Rat, EgyptianMau, Hamster]


【迭代器的威力-荔枝】

/* Iterator的真正威力: 能夠將遍歷序列的操作 與序列底層的結構相分離。 */ /* 有時會說: 迭代器統一了 對容器的訪問方式。 */ public class CrossContainerIteration {public static void display(Iterator<Pet> it) {// Iterator 參數while (it.hasNext()) {Pet p = it.next();System.out.print(p.id() + ":" + p + " ");}System.out.println();}public static void main(String[] args) {ArrayList<Pet> pets = Pets.arrayList(8);LinkedList<Pet> petsLL = new LinkedList<Pet>(pets);HashSet<Pet> petsHS = new HashSet<Pet>(pets);TreeSet<Pet> petsTS = new TreeSet<Pet>(pets);display(pets.iterator());display(petsLL.iterator());display(petsHS.iterator());display(petsTS.iterator());} } // 打印結果: 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 5:Cymric 2:Cymric 7:Manx 1:Manx 3:Mutt 6:Pug 4:Pug 0:Rat


【11.6.1】ListIterator(可雙向移動的迭代器)

(干貨——Iterator 只能單向移動,ListIterator 能夠雙向移動)

1)獲得ListIterator對象: 調用 List 的 listIterator() 方法產生一個指向 List的 ListIterator ,還可以調用 listIterator(n) 創建一個一開始就指向列表索引為 n 的元素處的 ListIterator;

【ListIterator的荔枝】

public class ListIteration { // ListIterator 迭代器可雙向移動.public static void main(String[] args) {List<Pet> pets = Pets.arrayList(8);ListIterator<Pet> it = pets.listIterator();while (it.hasNext()) // 前向移動System.out.print(it.next() + ", " + it.nextIndex() + ", " + it.previousIndex() + "; ");System.out.println();while (it.hasPrevious()) // 后向移動 (所以 ListIterator 是雙向移動)System.out.print(it.previous().id() + " ");System.out.println();System.out.println(pets);// 創建一個 一開始就指向索引 為 3 的元素處的 ListIteraor.it = pets.listIterator(3);while (it.hasNext()) {it.next(); // next()方法是 先加 后 返回 值;it.add(Pets.randomPet()); // 從索引==3處開始添加元素}System.out.println(pets);} } /* public int nextIndex() { return cursor; } public int previousIndex() { return cursor - 1; } public E next() { checkForComodification(); int i = cursor; if (i >= size)throw new NoSuchElementException(); Object[] elementData = ArrayList.this.elementData; if (i >= elementData.length)throw new ConcurrentModificationException(); cursor = i + 1; return (E) elementData[lastRet = i]; // next()方法是 先加 后 返回 值; } */ // 打印結果: Rat, 1, 0; Manx, 2, 1; Cymric, 3, 2; Mutt, 4, 3; Pug, 5, 4; Cymric, 6, 5; Pug, 7, 6; Manx, 8, 7; 7 6 5 4 3 2 1 0 [Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug, Manx] [Rat, Manx, Cymric, Mutt, Cymric, Pug, Rat, Cymric, EgyptianMau, Pug, Hamster, Manx, EgyptianMau]
【11.7】LinkedList

1)基本原理: LinkedList 底層用 鏈表實現,所以它擅長于 元素的移除 和 添加, 但查找元素的速度較慢;

2)LinkedList的特性: 還添加了 可以使其用作棧, 隊列或 雙端隊列的方法;

3)LinkedList 方法列表:

3.1)返回第一個元素: getFirst() 和 element() 方法, peek()方法;如果list 為空,則getFirst() 和 element() 方法拋出異常 NoSuchElementException;peek() 方法不同的是 當列表為空時, 會返回 null;

3.2)移除第一個元素: removeFilrst() 和 remove() 方法, poll() 方法, 如果list 為空, 則 removeFirst() 和 remove() 方法拋出異常 NoSuchElementException;而poll() 不同的是, 當列表為空時 返回 null;

3.3)插入第一個元素: addFirst() 方法;

3.4)插入最后一個元素: offer() 方法 == add()方法 和?addLast() 方法;

3.4)刪除最后一個元素并返回刪除的元素:removeLast() 方法;若list 為null,則拋出異常NoSuchElementException

【LinkedList 荔枝】

// LinkedList 的方法列表 // 利用LinkedList可實現 棧,隊列,雙端隊列 public class LinkedListFeatures {public static void main(String[] args) {LinkedList<Pet> pets = new LinkedList<Pet>(Pets.arrayList(5));print("0:pets = " + pets);print("1:pets.getFirst() = " + pets.getFirst()); // 獲取 第一個元素,列表為空 拋異常print("1:pets.element() = " + pets.element()); // 獲取 第一個元素, 列表為空 拋異常 print("2:pets.peek() = " + pets.peek()); // 獲取 第一個元素,列表為空 不拋異常 返回nullprint("3:pets.remove() = " + pets.remove()); // 刪除第一個元素并返回刪除的元素,為空拋異常 print("3:pets.removeFirst() = " + pets.removeFirst()); // 刪除第一個元素并返回刪除的元素,為空拋異常print("4:pets.poll() = " + pets.poll()); // 刪除第一個元素,為空不拋異常 返回nullprint("4:pets = " + pets);pets.addFirst(new Rat()); // 在隊首 插入print("5:After pets.addFirst(new Rat()), pets = " + pets);pets.offer(Pets.randomPet()); // 元素進隊, 在隊尾插入print("6:After pets.offer(Pets.randomPet()), pets = " + pets);pets.add(Pets.randomPet()); // 在隊尾插入print("7:After pets.add(Pets.randomPet()), pets = " + pets);pets.addLast(new Hamster()); // 在隊尾插入print("8:After pets.addLast(new Hamster()), pets = " + pets);print("9:pets.removeLast() = " + pets.removeLast()); // 刪除隊尾元素print("9:pets = " + pets);} }

// 打印結果: 0:pets = [Rat, Manx, Cymric, Mutt, Pug] 1:pets.getFirst() = Rat 1:pets.element() = Rat 2:pets.peek() = Rat 3:pets.remove() = Rat 3:pets.removeFirst() = Manx 4:pets.poll() = Cymric 4:pets = [Mutt, Pug] 5:After pets.addFirst(new Rat()), pets = [Rat, Mutt, Pug] 6:After pets.offer(Pets.randomPet()), pets = [Rat, Mutt, Pug, Cymric] 7:After pets.add(Pets.randomPet()), pets = [Rat, Mutt, Pug, Cymric, Pug] 8:After pets.addLast(new Hamster()), pets = [Rat, Mutt, Pug, Cymric, Pug, Hamster] 9:pets.removeLast() = Hamster 9:pets = [Rat, Mutt, Pug, Cymric, Pug] 【代碼解說】Queue的實現, 在LinkedList的基礎上 添加了 element(), offer() ?peek(), ?poll(), ?remove() ?等方法;


【11.8】Stack 棧

1)LinkedList 具有能夠直接實現 棧的所有功能的方法,因此可以直接將 LinkedList 作為 棧使用;

2)基于LinkedList 的 Stack實現(強烈推薦)

// Stack 的源碼實現, 不過這不是 java api 提供的,是作者自己寫的 public class Stack<T> {java.util.Stack<Integer> s = null;private LinkedList<T> storage = new LinkedList<T>();// 入棧public void push(T v) {// 在鏈表表頭 插入storage.addFirst(v);}// 返回棧頂元素,僅僅是查看,或偷看,嘿嘿public T peek() {// 獲取 第一個元素,列表為空 拋異常return storage.getFirst(); }// 出棧,表頭出棧;public T pop() {// 刪除第一個元素,為空拋異常return storage.removeFirst();}public boolean empty() {return storage.isEmpty();}public String toString() {return storage.toString();} }

/* java.util.Stack 源碼實現(不建議用) */ public class Stack<E> extends Vector<E> {public Stack() {}public E push(E item) {addElement(item);return item;}public synchronized E pop() { // 同步方法,性能較低,已棄用E obj;int len = size();obj = peek();removeElementAt(len - 1);return obj;}public synchronized E peek() { // 同步方法,性能較低,已棄用int len = size();if (len == 0)throw new EmptyStackException();return elementAt(len - 1);}public boolean empty() {return size() == 0;}public synchronized int search(Object o) { // 同步方法,性能較低,已棄用 int i = lastIndexOf(o);if (i >= 0) {return size() - i;}return -1;}/** use serialVersionUID from JDK 1.0.2 for interoperability */private static final long serialVersionUID = 1224463164541339165L; }

【代碼解說】

1)push方法: 元素進棧;

2)peek 和 pop方法: 都是返回棧頂元素,不過 peek僅僅是返回,而pop方法移除并返回棧頂元素;

【java.util.Stack荔枝】

public class StackTest {public static void main(String[] args) {Stack<String> stack = new Stack<String>();for (String s : "My dog has fleas".split(" "))stack.push(s);while (!stack.empty())System.out.print(stack.pop() + " ");} }

// 打印結果: fleas has dog My

【11.9】Set 不保存重復元素

1)查找操作: 成了 Set中最重要的操作,因此你通常都會用 HashSet 來實現, 能夠快速查找;

2)Set的基本原理: Set 就是 Collection,只是行為不同而已;Set是基于對象的值來確定歸屬性的;

【Set荔枝】

// HashSet 以最快的查詢速度進行 存儲 (比較) public class SetOfInteger { public static void main(String[] args) {Random rand = new Random(47);Set<Integer> intset = new HashSet<Integer>();for (int i = 0; i < 10000; i++) // 10000次循環也僅有30個元素 intset.add(rand.nextInt(30));intset.add(100); // 無序不重復intset.add(10000); // 無序不重復intset.add(1000); // 無序不重復System.out.println(intset);} }

// 打印結果:  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 10000, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 100, 1000]
3)3種Set對比——HashSet, TreeSet 和 LinkedHashSet 比較

3.1)HashSet:使用散列函數來確定元素的存儲位置 (無序不重復)底層用 HashMap.key 實現 或 LinkedHashMap.key 實現;

3.2)TreeSet:把元素存儲在 紅黑樹數據結構?(有序不重復)?底層用 TreeMap.key 實現;

3.3)LinkedHashSet:因為查詢速度的原因也使用了散列,但是他也使用了鏈表來維護元素的插入順序,且保留了 哈??焖俨檎业牟檎宜俣?#xff1b;(有序不重復);繼承了?HashSet, 故底層用 LinkedHashMap.key 實現 而沒有用 HashMap.key實現;

【TreeSet荔枝】

// TreeSet 對 輸出結果排序 (比較) public class SortedSetOfInteger {public static void main(String[] args) {Random rand = new Random(47);SortedSet<Integer> intset = new TreeSet<Integer>();for (int i = 0; i < 10000; i++)intset.add(rand.nextInt(30));intset.add(100); // 有序不重復intset.add(10000); // 有序不重復intset.add(1000); // 有序不重復System.out.println(intset);} } // 打印結果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 // , 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 100, 1000, 10000]

【Set容器的操作荔枝】

public class SetOperations {public static void main(String[] args) {Set<String> set1 = new HashSet<String>();Collections.addAll(set1, "A B C D E F G H I J K L".split(" "));print("set1 = " + set1);set1.add("M");print("H: set1.contains(\"H\") = " + set1.contains("H")); print("N: set1.contains(\"N\") = " + set1.contains("N")); // set 是否包含 元素Set<String> set2 = new HashSet<String>();Collections.addAll(set2, "H I J K L".split(" "));print("\nset2 = " + set2);print("set2 in set1: set1.containsAll(set2) = " + set1.containsAll(set2)); // set1 是否包含 set2。 。集合的包含。set1.remove("H"); // 異常元素 H print("\nset1 = " + set1);print("set2 in set1: set1.containsAll(set2) = " + set1.containsAll(set2));print("\nbefore: set1 = " + set1);print("before: set2 = " + set2);set1.removeAll(set2); // 移除 set1 和 set2的 交集print("after: set2 removed from set1: set1.removeAll(set2), set1 = " + set1);Collections.addAll(set1, "X Y Z".split(" ")); // 添加數組元素 到 set1.print("\n'X Y Z' added to set1: Collections.addAll(set1, \"X Y Z\".split(\" \")), set1 = " + set1);} } // 打印結果: set1 = [A, B, C, D, E, F, G, H, I, J, K, L] H: set1.contains("H") = true N: set1.contains("N") = falseset2 = [H, I, J, K, L] set2 in set1: set1.containsAll(set2) = trueset1 = [A, B, C, D, E, F, G, I, J, K, L, M] set2 in set1: set1.containsAll(set2) = falsebefore: set1 = [A, B, C, D, E, F, G, I, J, K, L, M] before: set2 = [H, I, J, K, L] after: set2 removed from set1: set1.removeAll(set2), set1 = [A, B, C, D, E, F, G, M]'X Y Z' added to set1: Collections.addAll(set1, "X Y Z".split(" ")), set1 = [A, B, C, D, E, F, G, M, X, Y, Z]
【TreeSet荔枝】

/* 將讀取的文件內容分割為多個不重復單詞,并存儲到 TreeSet容器中 */ public class UniqueWords {public static void main(String[] args) {Set<String> words = new TreeSet<String>(new TextFile("src/chapter11/UniqueWords.java", "\\W+"));System.out.println(words);} } // Read a file, split by any regular expression:public TextFile(String fileName, String splitter) {super(Arrays.asList(read(fileName).split(splitter)));// Regular expression split() often leaves an empty// String at the first position:if (get(0).equals(""))remove(0);} // 打印結果(有序集合):  [Set, String, System, TextFile, TreeSet, UniqueWords, W, args, chapter11, class, import, java, main, mindview, net, new, out, package, println, public, src, static, util, void, words] 【代碼解說】TreeSet 輸出的結果是有序的,且按照 字典序排序的,因此大寫和小寫字母 劃分到了不同的組中(注意: 大寫字母的ASCII碼 小于 小寫字母的 ASCII 碼)

【如何讓 TreeSet 使用字母序 對 元素進行排序 ?】?

向 TreeSet 構造器傳入 String.CASE_INSENTIVE_ORDER ?比較器;


【把比較器傳入 TreeSet構造器的荔枝】

public class UniqueWordsAlphabetic {public static void main(String[] args) {Set<String> words = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);words.addAll(new TextFile("src/chapter11/SetOperations.java", "\\W+"));System.out.println(words);} }

public static final Comparator<String> CASE_INSENSITIVE_ORDER= new CaseInsensitiveComparator(); private static class CaseInsensitiveComparatorimplements Comparator<String>, java.io.Serializable { // 這個比較器 是 String$CaseInsensitiveComparator 是 String類的靜態內部類// use serialVersionUID from JDK 1.2.2 for interoperabilityprivate static final long serialVersionUID = 8575799808933029326L;public int compare(String s1, String s2) {int n1 = s1.length();int n2 = s2.length();int min = Math.min(n1, n2);for (int i = 0; i < min; i++) {char c1 = s1.charAt(i);char c2 = s2.charAt(i);if (c1 != c2) {c1 = Character.toUpperCase(c1);c2 = Character.toUpperCase(c2);if (c1 != c2) {c1 = Character.toLowerCase(c1);c2 = Character.toLowerCase(c2);if (c1 != c2) {// No overflow because of numeric promotionreturn c1 - c2;}}}}return n1 - n2;}/** Replaces the de-serialized object. */private Object readResolve() { return CASE_INSENSITIVE_ORDER; }} // 打印結果:  [A, add, addAll, added, after, args, B, before, C, chapter11, class, Collections, contains, containsAll, D, E, F, from, G, H, HashSet, I, import, in, J, java, K, L, M, main, mindview, N, nbefore, net, new, nset1, nset2, package, Print, public, remove, removeAll, removed, Set, set1, set2, SetOperations, split, static, String, to, util, void, X, Y, Z]

【總結】字典序和字母序的區別在于:?字典序按照ASCII 碼來比較; 字母序在忽略字母大小寫的基礎上用 ASCII碼來比較;


【11.10】Map

// HashMap(以最快的查找速度進行存儲) 的荔枝. public class Statistics {public static void main(String[] args) {Random rand = new Random(47);Map<Integer, Integer> m = new HashMap<Integer, Integer>();for (int i = 0; i < 10000; i++) {int r = rand.nextInt(20); // 產生20以內的隨機數Integer freq = m.get(r); // 若沒有key 對應的value 則返回 nullm.put(r, freq == null ? 1 : freq + 1); // 發生了對 Integer 的裝箱和拆箱}System.out.println(m);} }

// 打印結果: {0=481, 1=502, 2=489, 3=508, 4=481, 5=503, 6=519, 7=471, 8=468, 9=549, 10=513, 11=531, 12=521, 13=506, 14=477, 15=497, 16=533, 17=509, 18=478, 19=464} 2)Map.containsKey()方法 和?containsValue()方法

// Map.containsKey() 和 Map.containsValue() 的區別 public class PetMap {public static void main(String[] args) {Map<String, Pet> petMap = new HashMap<String, Pet>();petMap.put("My Cat", new Cat("Molly"));petMap.put("My Dog", new Dog("Ginger"));petMap.put("My Hamster", new Hamster("Bosco"));print(petMap);Pet dog = petMap.get("My Dog");print(dog);print(petMap.containsKey("My Dog")); // 是否包含該keyprint(petMap.containsValue(dog)); // 是否包含該value} } // 打印結果: {My Dog=Dog Ginger, My Cat=Cat Molly, My Hamster=Hamster Bosco} Dog Ginger true true 【代碼解說】容器很容易就擴展到 多維, 只需要把值設置到 map中,就可以構成強大的數據結構:最好的證明就是一般框架分前后臺,只要定義好輸入或輸出接口,也就是map的key;則前臺通過json 字符串傳入相應的字段值,然后后臺也通過相應的鍵值獲取value以進行前后臺的數據交互;不管你數據維度多么復雜,都是 a piece of cake.

public class MapOfList {public static Map<Person, List<? extends Pet>> petPeople = new HashMap<Person, List<? extends Pet>>();static {petPeople.put(new Person("Dawn-1"),Arrays.asList(new Cymric("Molly1-1"), new Mutt("Spot1-2")));petPeople.put(new Person("Kate-2"), Arrays.asList(new Cat("Shackleton2-1"),new Cat("Elsie May2-2"), new Dog("Margrett2-3")));petPeople.put(new Person("Marilyn-3"), Arrays.asList(new Pug("Louie aka Louis Snorkelstein Dupree3-1"), new Cat("Stanford aka Stinky el Negro3-2"), new Cat("Pinkola3-3")));petPeople.put(new Person("Luke-4"),Arrays.asList(new Rat("Fuzzy4-1"), new Rat("Fizzy4-2")));petPeople.put(new Person("Isaac-5"), Arrays.asList(new Rat("Freckly5-1")));}public static void main(String[] args) {print("petPeople.keySet() = " + petPeople.keySet()); // 鍵setprint("petPeople.values() = " + petPeople.values()); // 值setprint("petPeople.entrySet() = " + petPeople.entrySet()); // 鍵值對setfor (Person person : petPeople.keySet()) {print(person + " has:"); // map.keyfor (Pet pet : petPeople.get(person)) // map.value 是一個 list,遍歷整個listprint(" " + pet);}} } // 打印結果: petPeople.keySet() = [Person Luke-4, Person Marilyn-3, Person Kate-2, Person Isaac-5, Person Dawn-1] petPeople.values() = [[Rat Fuzzy4-1, Rat Fizzy4-2], [Pug Louie aka Louis Snorkelstein Dupree3-1, Cat Stanford aka Stinky el Negro3-2, Cat Pinkola3-3], [Cat Shackleton2-1, Cat Elsie May2-2, Dog Margrett2-3], [Rat Freckly5-1], [Cymric Molly1-1, Mutt Spot1-2]] petPeople.entrySet() = [Person Luke-4=[Rat Fuzzy4-1, Rat Fizzy4-2], Person Marilyn-3=[Pug Louie aka Louis Snorkelstein Dupree3-1, Cat Stanford aka Stinky el Negro3-2, Cat Pinkola3-3], Person Kate-2=[Cat Shackleton2-1, Cat Elsie May2-2, Dog Margrett2-3], Person Isaac-5=[Rat Freckly5-1], Person Dawn-1=[Cymric Molly1-1, Mutt Spot1-2]] Person Luke-4 has:Rat Fuzzy4-1Rat Fizzy4-2 Person Marilyn-3 has:Pug Louie aka Louis Snorkelstein Dupree3-1Cat Stanford aka Stinky el Negro3-2Cat Pinkola3-3 Person Kate-2 has:Cat Shackleton2-1Cat Elsie May2-2Dog Margrett2-3 Person Isaac-5 has:Rat Freckly5-1 Person Dawn-1 has:Cymric Molly1-1Mutt Spot1-2

【代碼解說】:map 可以返回她的鍵set 或 值 set,或鍵值對set;


【11.11】 Queue 隊列

1)隊列基礎知識:隊列是一個容器,從隊列的一端插入元素,從另一端取出元素,并且插入順序和取出順序是相同的;

2)LinkedList 支持 Queue:LinkedList 提供了方法以支持隊列的行為, LinkedList 實現了 Queue 接口,故LinkedList 可以作為 Queue來使用;


【Queue 由 LinkedList 來實現的 荔枝】

/* public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E> */ // Queue 由 LinkedList 來實現的 荔枝 public class QueueDemo {public static void printQ(Queue queue) {while (queue.peek() != null) // peek() 獲取第一個元素,列表為空,返回null,不會拋異常System.out.print(queue.remove() + " ");System.out.println();}public static void main(String[] args) {// LinkedList 是 Queue的子類// 確切地說, LinkedList 是 Deque 的實現類,而Deque 是 Queue的子類Queue<Integer> queue = new LinkedList<Integer>();Random rand = new Random(47);for (int i = 0; i < 10; i++)queue.offer(rand.nextInt(i + 10)); // offer() == add() 方法,元素進隊,在隊尾插入printQ(queue);Queue<Character> qc = new LinkedList<Character>();for (char c : "Brontosaurus".toCharArray())qc.offer(c);printQ(qc);LinkedList<String> mylist = new LinkedList<>(); // 容器為空,因為沒有元素mylist.element(); // LinkedList.element() == getFirst() 方法;為空拋異常} } // 打印結果: 8 1 1 1 5 14 3 1 0 1 B r o n t o s a u r u s Exception in thread "main" java.util.NoSuchElementExceptionat java.util.LinkedList.getFirst(LinkedList.java:244)at java.util.LinkedList.element(LinkedList.java:663)at chapter11.QueueDemo.main(QueueDemo.java:33) 3)Queue 方法列表,和 LinkedList 方法雷同;?

1)插入尾部:offer() == add() 方法

2)不刪除頭部并返回頭部: peek() 當queue為空返回空, element() ==getFirst() 拋出?NoSuchElementException;

3)刪除頭部并返回頭部: poll() 當queue為空返回空, remove() 拋出NoSuchElementException;


【11.11.1】 PriorityQueue 優先級隊列

1)優先級隊列: 聲明下一個彈出元素是最需要的元素(具有最高的優先級);

【荔枝】優先級隊列 PriorityQueue 荔枝(默認優先級排序規則 和 自定義優先級排序規則)

// 優先級隊列 PriorityQueue 荔枝(默認優先級排序規則 和 自定義優先級排序規則) public class PriorityQueueDemo {public static void main(String[] args) {PriorityQueue<Integer> priorityQueue = new PriorityQueue<Integer>();Random rand = new Random(47);for (int i = 0; i < 10; i++)priorityQueue.offer(rand.nextInt(i + 10)); // 入隊,插入隊尾QueueDemo.printQWithStr("默認是自然排序 == ASCII排序規則, priorityQueue = ", priorityQueue); // 默認是自然排序 == ASCII排序規則List<Integer> ints = Arrays.asList(25, 22, 20, 18, 14, 9, 3, 1, 1, 2,3, 9, 14, 18, 21, 23, 25); // 不可變的列表priorityQueue = new PriorityQueue<Integer>(ints);QueueDemo.printQWithStr("默認是自然排序 == ASCII排序規則, priorityQueue = ", priorityQueue);// 自定義排序規則priorityQueue = new PriorityQueue<Integer>(ints.size(),Collections.reverseOrder()); // 優先級逆序隊列.priorityQueue.addAll(ints); // 添加整個List 元素QueueDemo.printQWithStr(" 自定義排序規則 == 優先級逆序隊列 Collections.reverseOrder(), priorityQueue = ", priorityQueue);String fact = "EDUCATION SHOULD ESCHEW OBFUSCATION";List<String> strings = Arrays.asList(fact.split("")); // 注意這種分割方式和分割結果PriorityQueue<String> stringPQ = new PriorityQueue<String>(strings);QueueDemo.printQWithStr("默認是自然排序 == ASCII排序規則, stringPQ = ", stringPQ);// 自定義排序規則stringPQ = new PriorityQueue<String>(strings.size(),Collections.reverseOrder()); // 優先級逆序隊列.stringPQ.addAll(strings);QueueDemo.printQWithStr(" 自定義排序規則 == 優先級逆序隊列 Collections.reverseOrder(), stringPQ = ", stringPQ);Set<Character> charSet = new HashSet<Character>();for (char c : fact.toCharArray())charSet.add(c); // Autoboxing 自動裝箱PriorityQueue<Character> characterPQ = new PriorityQueue<Character>(charSet);QueueDemo.printQWithStr("HashSet構造的PriorityQueue,并ASCII排序規則后, characterPQ = ", characterPQ);} }

// 打印結果; 默認是自然排序 == ASCII排序規則, priorityQueue = 0 1 1 1 1 1 3 5 8 14 (優先級重復) 默認是自然排序 == ASCII排序規則, priorityQueue = 1 1 2 3 3 9 9 14 14 18 18 20 21 22 23 25 25 (優先級重復)自定義排序規則 == 優先級逆序隊列 Collections.reverseOrder(), priorityQueue = 25 25 23 22 21 20 18 18 14 14 9 9 3 3 2 1 1 (同上) 默認是自然排序 == ASCII排序規則, stringPQ = A A B C C C D D E E E F H H I I L N N O O O O S S S T T U U U W (同上)自定義排序規則 == 優先級逆序隊列 Collections.reverseOrder(), stringPQ = W U U U T T S S S O O O O N N L I I H H F E E E D D C C C B A A HashSet構造的PriorityQueue,并ASCII排序規則后, characterPQ = A B C D E F H I L N O S T U W (優先級不重復)

【11.12】Collection 和 Iterator

1)Collection 是描述所有容器共性的根接口。 容器之間的共性都是通過 迭代器來達成的。

2)要實現 Collection 接口就需要 提供Iterator() 方法;

【荔枝】容器的兩種遍歷方式

// 容器的兩種遍歷方式: 接口遍歷 和 迭代器遍歷(其遍歷方式 與 底層容器 解耦合). public class InterfaceVsIterator {public static void display(Iterator<Pet> it) { // 參數是 Iteraotr 迭代器類型 while (it.hasNext()) {Pet p = it.next();System.out.print(p.id() + ":" + p + " ");}System.out.println();}public static void display(Collection<Pet> pets) { // 參數是 Collection類型for (Pet p : pets) System.out.print(p.id() + ":" + p + " ");System.out.println();}public static void main(String[] args) {List<Pet> petList = Pets.arrayList(8);Set<Pet> petSet = new HashSet<Pet>(petList);Map<String, Pet> petMap = new LinkedHashMap<String, Pet>();String[] names = ("Ralph, Eric, Robin, Lacey, "+ "Britney, Sam, Spot, Fluffy").split(", ");for (int i = 0; i < names.length; i++)petMap.put(names[i], petList.get(i));display(petList); // 通過 Collection接口 遍歷display(petSet); // 通過 Collection接口 遍歷display(petList.iterator()); // 通過 迭代器 遍歷display(petSet.iterator()); // 通過 迭代器 遍歷System.out.println(petMap);System.out.println(petMap.keySet());display(petMap.values()); // 通過 Collection接口 遍歷display(petMap.values().iterator()); // 通過 迭代器 遍歷} } // 打印結果 :  0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx {Ralph=Rat, Eric=Manx, Robin=Cymric, Lacey=Mutt, Britney=Pug, Sam=Cymric, Spot=Pug, Fluffy=Manx} [Ralph, Eric, Robin, Lacey, Britney, Sam, Spot, Fluffy] 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 【其他解說】

當實現一個 Collection時,盡量使用 迭代器的方式去遍歷,而不是使用 Colleciton 的 foreach 循環遍歷;

【實現Collection的兩種方式】

方式1)繼承?AbstractCollection;

方式2)實現?Iterable接口;


【方式1:繼承AbstractCollection的荔枝(不推薦,因為如果實現類必須繼承其他父類的話,那豈不是很難堪嗎?)

// 通過繼承 AbstractCollection 的方式實現Collection(1) public class CollectionSequence extends AbstractCollection<Pet> {private Pet[] pets = Pets.createArray(8);public int size() {return pets.length;}public Iterator<Pet> iterator() {return new Iterator<Pet>() {// 通過匿名內部類實現 迭代器設計模式private int index = 0;public boolean hasNext() {return index < pets.length;}public Pet next() {return pets[index++];}public void remove() { // Not implementedthrow new UnsupportedOperationException();}};}public static void main(String[] args) {CollectionSequence c = new CollectionSequence();InterfaceVsIterator.display(c);InterfaceVsIterator.display(c.iterator());} }

// 打印結果: 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx // 容器的兩種遍歷方式: 接口遍歷 和 迭代器遍歷(其遍歷方式 與 底層容器 解耦合). public class InterfaceVsIterator {// 參數是 Iteraotr 迭代器類型 (1 首選)public static void display(Iterator<Pet> it) {while (it.hasNext()) {Pet p = it.next();System.out.print(p.id() + ":" + p + " ");}System.out.println();}// 參數是 Collection類型(不推薦,因為有可能無法通過繼承AbstractCollection來實現Collection )public static void display(Collection<Pet> pets) { for (Pet p : pets) System.out.print(p.id() + ":" + p + " ");System.out.println();}

【方式2:實現?Iterable接口的荔枝(強力推薦,特別當實現類繼承了其他父類而無法繼承 AbstractCollection 的時候)

class PetSequence {protected Pet[] pets = Pets.createArray(8); }// 實現一個不是 Collection 的外部類. 方式2: 實現 Iterable接口. // 主要是為了要創建一個 自定義的 迭代器來 遍歷 Collection 中的元素. public class NonCollectionSequence extends PetSequence implements Iterable<Pet>{@Overridepublic Iterator<Pet> iterator() {return new Iterator<Pet>() {private int index = 0;public boolean hasNext() {return index < pets.length;}public Pet next() {return pets[index++];}public void remove() { // Not implementedthrow new UnsupportedOperationException();}};}public static void main(String[] args) {NonCollectionSequence nc = new NonCollectionSequence();InterfaceVsIterator.display(nc.iterator());} } // 打印結果: 0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx

方式1)迭代器的方式:參數是 Iteraotr 迭代器類型 (1 首選);

方式2)foreach 循環:參數是 Collection類型(不推薦,因為有可能無法通過繼承AbstractCollection來實現Collection );

【Collection實現類的總結】當然了,條件允許的話,你既可以繼承?AbstractCollection 也可以 實現?Iterable 接口,以利于代碼維護;


【11.13】foreach 與 迭代器

1)foreach 遍歷: foreach 不僅用于數組,也可以用于 Collection 的任何容器;


【foreach遍歷容器的荔枝】

// foreach 工作的 荔枝. public class ForEachCollections {public static void main(String[] args) {Collection<String> cs = new LinkedList<String>();Collections.addAll(cs, "Take the long way home".split(" "));for (String s : cs)System.out.print("'" + s + "' ");} } // 打印結果: 'Take' 'the' 'long' 'way' 'home'

2)foreach 工作原理: 因為 java se5 ?引入了 Iterable 接口, 該接口包含一個能夠產生 Iterator 的 iterator() 方法, 并且 Iterable 接口被 foreach 用來在 序列中移動。如果實現類實現了 Iterable,則都可以用 foreach 去遍歷 該實現類的對象數組, 或以該實現類作為泛型的容器;


【foreach 遍歷的荔枝(這個荔枝非常重要)】

// 只要創建了任何實現 Iterable的類,都可以將它用于 foreach 語句中. public class IterableClass implements Iterable<String> {protected String[] words = ("And that is how "+ "we know the Earth to be banana-shaped.").split(" ");public Iterator<String> iterator() {/* 返回一個匿名內部類 */return new Iterator<String>() {private int index = 0;public boolean hasNext() {return index < words.length;}public String next() {return words[index++];}public void remove() { // Not implemented/* 注意這里拋出的異常類型UnsupportedOperationException */throw new UnsupportedOperationException();}};}public static void main(String[] args) {for (String s : new IterableClass())System.out.print(s + " ");System.out.println();} } // 打印結果: And that is how we know the Earth to be banana-shaped.

【foreach 用于遍歷數組】

// foreach 語句也可以 應用于 遍歷數組 public class ArrayIsNotIterable {static <T> void test(Iterable<T> ib) {for (T t : ib)System.out.print(t + " ");}public static void main(String[] args) {test(Arrays.asList(1, 2, 3));String[] strings = { "A", "B", "C" };// An array works in foreach, but it's not Iterable:// test(strings);// You must explicitly convert it to an Iterable:test(Arrays.asList(strings));} } //打印結果: 1 2 3 A B C 【代碼解說】 在java se5中,大量的類都是 Iterable類型,主要包括 所有的 Collection,但是肯定不包括 Map 類型;


【foreach荔枝--打印操作系統環境變量】

/* 打印操作系統環境變量 */ public class EnvironmentVariables {public static void main(String[] args) {for (Map.Entry entry : System.getenv().entrySet()) { // entry 是一個 SetSystem.out.println(entry.getKey() + ": " + entry.getValue());}} }

// 打印結果: LOCALAPPDATA: C:\Users\pacoson\AppData\Local PROCESSOR_LEVEL: 6 FP_NO_HOST_CHECK: NO USERDOMAIN: pacoson-PC LOGONSERVER: \\PACOSON-PC JAVA_HOME: D:\java\jdk1.8.0_91 SESSIONNAME: Console ALLUSERSPROFILE: C:\ProgramData PROCESSOR_ARCHITECTURE: AMD64 PSModulePath: C:\Windows\system32\WindowsPowerShell\v1.0\Modules\ SystemDrive: C: APPDATA: C:\Users\pacoson\AppData\Roaming USERNAME: pacoson windows_tracing_logfile: C:\BVTBin\Tests\installpackage\csilogfile.log ProgramFiles(x86): C:\Program Files (x86) CommonProgramFiles: C:\Program Files\Common Files Path: C:\ProgramData\Oracle\Java\javapath;.;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\java\jdk1.8.0_91\bin;D:\Program Files (x86)\MySQL\MySQL Server 5.1\bin;C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin;E:\cmb\elasticsearch\elasticsearch-5.2.0\bin;E:\cmb\elasticsearch\kibana-5.2.0-windows-x86\bin; PATHEXT: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC OS: Windows_NT windows_tracing_flags: 3 COMPUTERNAME: PACOSON-PC PROCESSOR_REVISION: 3c03 CLASSPATH: .;D:\java\jdk1.8.0_91\lib\tools.jar;D:\java\jdk1.8.0_91\lib\dt.jar; CommonProgramW6432: C:\Program Files\Common Files ComSpec: C:\Windows\system32\cmd.exe ProgramData: C:\ProgramData ProgramW6432: C:\Program Files HOMEPATH: \Users\pacoson SystemRoot: C:\Windows TEMP: C:\Users\pacoson\AppData\Local\Temp HOMEDRIVE: C: PROCESSOR_IDENTIFIER: Intel64 Family 6 Model 60 Stepping 3, GenuineIntel USERPROFILE: C:\Users\pacoson TMP: C:\Users\pacoson\AppData\Local\Temp CommonProgramFiles(x86): C:\Program Files (x86)\Common Files ProgramFiles: C:\Program Files PUBLIC: C:\Users\Public NUMBER_OF_PROCESSORS: 4 windir: C:\Windows =::: ::\ 【注意】不存在任何 從數組到 Iterable類型的 自動轉換,你必須手動轉換;


【11.13.1】適配器方法慣用法,適配器設計模式

1)添加一個能夠產生 Iterable對象的方法:

【反向迭代器的荔枝】

// ArrayList的子類 class ReversibleArrayList<T> extends ArrayList<T> {public ReversibleArrayList(Collection<T> c) {super(c);}/* 添加一個能夠產生 Iterable對象的方法 */public Iterable<T> reversed() {return new Iterable<T>() { // 匿名內部類// 這里會產生一個 反向迭代器public Iterator<T> iterator() {return new Iterator<T>() {int current = size() - 1;public boolean hasNext() {return current > -1;}public T next() {return get(current--);}public void remove() { // Not implementedthrow new UnsupportedOperationException();}};}};} } public class AdapterMethodIdiom {public static void main(String[] args) {ReversibleArrayList<String> ral = new ReversibleArrayList<String>(Arrays.asList("To be or not to be".split(" ")));for (String s : ral) // foreach 循環遍歷System.out.print(s + " ");System.out.println();for (String s : ral.reversed()) // 反向迭代遍歷System.out.print(s + " ");} } // 打印結果: // To be or not to be // be to not or be To

【多種迭代器方式的荔枝】

// 多種迭代器方式 public class MultiIterableClass extends IterableClass {public Iterable<String> reversed() {return new Iterable<String>() {public Iterator<String> iterator() {return new Iterator<String>() { // 返回一個 逆向迭代器int current = words.length - 1;public boolean hasNext() {return current > -1;}public String next() {return words[current--];}public void remove() { // Not implementedthrow new UnsupportedOperationException();}};}};}public Iterable<String> randomized() {return new Iterable<String>() {public Iterator<String> iterator() { // 翻譯一個隨機混排后的迭代器List<String> shuffled = new ArrayList<String>(Arrays.asList(words));Collections.shuffle(shuffled, new Random(47));return shuffled.iterator();}};}public static void main(String[] args) {MultiIterableClass mic = new MultiIterableClass();for (String s : mic.reversed()) // 逆向迭代System.out.print(s + " ");System.out.println();for (String s : mic.randomized()) // 隨機迭代System.out.print(s + " ");System.out.println();for (String s : mic) // foreach 循環System.out.print(s + " ");} } // 打印結果: banana-shaped. be to Earth the know we how is that And is banana-shaped. Earth that how the be And we know to And that is how we know the Earth to be banana-shaped.
【荔枝--Arrays.asList()返回的List 是否用 ArrayList 進行包裝的 區別】

// Arrays.asList()返回的List 是否用 ArrayList 進行包裝的 區別. public class ModifyingArraysAsList {public static void main(String[] args) {Random rand = new Random(47);Integer[] ia = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia));/* ArrayList的構造函數首先會拷貝數組,所以List引用的數組與原數組不是同一個數組 */System.out.println("Before shuffling: list1 = " + list1);Collections.shuffle(list1, rand); System.out.println("After shuffling: Collections.shuffle(list1, rand), list1 = " + list1);System.out.println("array: Arrays.toString(ia) = " + Arrays.toString(ia));System.out.println("\n================================================\n");List<Integer> list2 = Arrays.asList(ia);/* 沒有使用 ArrayList 構造函數,所以 list2 引用的數組 與 原數組 ia 是同一個數組 */System.out.println("Before shuffling: " + list2);Collections.shuffle(list2, rand);System.out.println("After shuffling: " + list2);System.out.println("array: " + Arrays.toString(ia));} } // 打印結果 : Before shuffling: list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] After shuffling: Collections.shuffle(list1, rand), list1 = [4, 6, 3, 1, 8, 7, 2, 5, 10, 9] array: Arrays.toString(ia) = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]================================================Before shuffling: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] After shuffling: [9, 1, 6, 3, 7, 2, 5, 10, 4, 8] array: [9, 1, 6, 3, 7, 2, 5, 10, 4, 8]

【11.14】總結










總結

以上是生活随笔為你收集整理的thinking-in-java(11) 持有对象的全部內容,希望文章能夠幫你解決所遇到的問題。

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

色五月丁香五月综合五月 | 巨爆乳无码视频在线观看 | 动漫av网站免费观看 | 精品无码av一区二区三区 | 国产av人人夜夜澡人人爽麻豆 | 日日碰狠狠丁香久燥 | 色综合久久网 | 亚洲色欲久久久综合网东京热 | 精品欧美一区二区三区久久久 | 亚洲天堂2017无码中文 | 精品成在人线av无码免费看 | 日韩欧美中文字幕在线三区 | 国产精品久久久久久久影院 | 国产无遮挡吃胸膜奶免费看 | 性生交大片免费看女人按摩摩 | 高潮毛片无遮挡高清免费视频 | 2020久久香蕉国产线看观看 | 一本无码人妻在中文字幕免费 | 福利一区二区三区视频在线观看 | 亚洲爆乳精品无码一区二区三区 | 亚洲中文字幕成人无码 | 伦伦影院午夜理论片 | 亚洲国产高清在线观看视频 | 久久精品女人的天堂av | 精品国产精品久久一区免费式 | 99久久亚洲精品无码毛片 | 18无码粉嫩小泬无套在线观看 | 国产人妻大战黑人第1集 | 亚洲欧美色中文字幕在线 | 久久精品国产99久久6动漫 | 最新国产麻豆aⅴ精品无码 | 亚洲一区二区三区四区 | 伊人色综合久久天天小片 | 中文字幕人成乱码熟女app | 300部国产真实乱 | 亚洲国产精品一区二区第一页 | 99久久精品国产一区二区蜜芽 | a在线亚洲男人的天堂 | 国产片av国语在线观看 | 国产xxx69麻豆国语对白 | 女人高潮内射99精品 | 无码免费一区二区三区 | 对白脏话肉麻粗话av | 久久99久久99精品中文字幕 | 国内精品久久毛片一区二区 | 久久aⅴ免费观看 | 国产无遮挡又黄又爽免费视频 | 亚洲s色大片在线观看 | 2019nv天堂香蕉在线观看 | 青青久在线视频免费观看 | 亚洲成熟女人毛毛耸耸多 | 成人免费无码大片a毛片 | 久久综合激激的五月天 | 精品夜夜澡人妻无码av蜜桃 | 东京无码熟妇人妻av在线网址 | 成人精品一区二区三区中文字幕 | 久久久婷婷五月亚洲97号色 | 欧美变态另类xxxx | 天天拍夜夜添久久精品 | 久久99国产综合精品 | 午夜精品久久久久久久久 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲色成人中文字幕网站 | 丰满少妇女裸体bbw | 大肉大捧一进一出好爽视频 | 一本久道久久综合婷婷五月 | 在线а√天堂中文官网 | 扒开双腿疯狂进出爽爽爽视频 | 强辱丰满人妻hd中文字幕 | 97色伦图片97综合影院 | 亚洲成av人片在线观看无码不卡 | 日本又色又爽又黄的a片18禁 | 无码国产乱人伦偷精品视频 | 久久亚洲国产成人精品性色 | 国产后入清纯学生妹 | 精品人妻中文字幕有码在线 | 野外少妇愉情中文字幕 | 国产精品无码永久免费888 | 久久久久久国产精品无码下载 | 精品久久综合1区2区3区激情 | 国产精品va在线观看无码 | 国产人妻精品一区二区三区 | 久久伊人色av天堂九九小黄鸭 | 无码中文字幕色专区 | 男女下面进入的视频免费午夜 | 国产激情艳情在线看视频 | 女人高潮内射99精品 | 国精品人妻无码一区二区三区蜜柚 | 牛和人交xxxx欧美 | 久久99精品国产麻豆 | 男女超爽视频免费播放 | 男女下面进入的视频免费午夜 | 久久人人爽人人爽人人片ⅴ | 成人免费无码大片a毛片 | 亚洲综合另类小说色区 | 国产成人精品三级麻豆 | 大肉大捧一进一出视频出来呀 | 无码吃奶揉捏奶头高潮视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 任你躁国产自任一区二区三区 | 国产乱人偷精品人妻a片 | 中文字幕无码av波多野吉衣 | aⅴ亚洲 日韩 色 图网站 播放 | 日本在线高清不卡免费播放 | 亚洲乱码国产乱码精品精 | 久久精品视频在线看15 | 亚洲自偷自偷在线制服 | 一个人免费观看的www视频 | 帮老师解开蕾丝奶罩吸乳网站 | 人妻aⅴ无码一区二区三区 | 国产精品永久免费视频 | 无码国模国产在线观看 | 亚洲国精产品一二二线 | 无码人妻av免费一区二区三区 | 少妇性荡欲午夜性开放视频剧场 | 中文字幕无码免费久久99 | 日本精品人妻无码免费大全 | 激情内射亚州一区二区三区爱妻 | 97精品国产97久久久久久免费 | 国产精品毛片一区二区 | 超碰97人人射妻 | 麻豆精产国品 | 高潮毛片无遮挡高清免费视频 | 中文字幕乱码亚洲无线三区 | 成人一在线视频日韩国产 | 激情人妻另类人妻伦 | 99精品视频在线观看免费 | 无遮挡国产高潮视频免费观看 | 欧洲精品码一区二区三区免费看 | 又大又紧又粉嫩18p少妇 | 国产av一区二区精品久久凹凸 | 国产又粗又硬又大爽黄老大爷视 | 色一情一乱一伦一视频免费看 | 中文字幕av日韩精品一区二区 | 扒开双腿疯狂进出爽爽爽视频 | 国产精品igao视频网 | 18无码粉嫩小泬无套在线观看 | 国产无av码在线观看 | 久久久久久a亚洲欧洲av冫 | 亚洲春色在线视频 | 影音先锋中文字幕无码 | 熟妇人妻中文av无码 | 呦交小u女精品视频 | 国产精品igao视频网 | 亚洲综合无码一区二区三区 | 九九综合va免费看 | 国产成人精品久久亚洲高清不卡 | 国产精品多人p群无码 | 99久久精品国产一区二区蜜芽 | 综合激情五月综合激情五月激情1 | 国产av一区二区精品久久凹凸 | 大胆欧美熟妇xx | 成熟人妻av无码专区 | 精品欧洲av无码一区二区三区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 啦啦啦www在线观看免费视频 | 未满小14洗澡无码视频网站 | 一个人免费观看的www视频 | 亚洲日本va午夜在线电影 | aⅴ在线视频男人的天堂 | 亚洲天堂2017无码 | 无码免费一区二区三区 | 国产精品久久久久久久9999 | a在线亚洲男人的天堂 | 亚洲精品欧美二区三区中文字幕 | 丝袜 中出 制服 人妻 美腿 | 伊人久久婷婷五月综合97色 | 亚洲成av人影院在线观看 | 欧美亚洲国产一区二区三区 | 波多野结衣一区二区三区av免费 | 双乳奶水饱满少妇呻吟 | 无码人妻黑人中文字幕 | 亚洲欧美日韩国产精品一区二区 | 成年美女黄网站色大免费全看 | 国产乱人偷精品人妻a片 | 欧美人与物videos另类 | 麻豆av传媒蜜桃天美传媒 | 亚洲啪av永久无码精品放毛片 | 亚洲色偷偷男人的天堂 | 精品一二三区久久aaa片 | 人妻与老人中文字幕 | 欧美日韩色另类综合 | 四十如虎的丰满熟妇啪啪 | 国产精品视频免费播放 | 狂野欧美性猛交免费视频 | 人妻天天爽夜夜爽一区二区 | 国精产品一品二品国精品69xx | 日本欧美一区二区三区乱码 | 亚洲一区二区三区无码久久 | 精品欧美一区二区三区久久久 | 国产精品手机免费 | 亚洲精品www久久久 | 无码成人精品区在线观看 | 欧美 日韩 人妻 高清 中文 | 亚洲欧美日韩国产精品一区二区 | 精品久久久久久人妻无码中文字幕 | 久久精品一区二区三区四区 | 一本色道婷婷久久欧美 | 亚洲国产精品无码一区二区三区 | 激情五月综合色婷婷一区二区 | 欧美野外疯狂做受xxxx高潮 | 人人澡人摸人人添 | 无遮无挡爽爽免费视频 | 精品无码一区二区三区的天堂 | 亚洲欧美综合区丁香五月小说 | 精品久久久久久人妻无码中文字幕 | 精品久久久无码中文字幕 | 激情亚洲一区国产精品 | 亚洲成a人片在线观看无码 | 乌克兰少妇xxxx做受 | 日本精品少妇一区二区三区 | 奇米影视7777久久精品 | 欧美性生交xxxxx久久久 | 未满小14洗澡无码视频网站 | 国产suv精品一区二区五 | 亚洲日韩av一区二区三区中文 | 国产黑色丝袜在线播放 | 日韩精品一区二区av在线 | 亚洲精品综合一区二区三区在线 | 国产无套粉嫩白浆在线 | 在线а√天堂中文官网 | 国产av人人夜夜澡人人爽麻豆 | 国产真实乱对白精彩久久 | 日韩亚洲欧美中文高清在线 | 日韩欧美群交p片內射中文 | 精品aⅴ一区二区三区 | 全球成人中文在线 | 国产精品亚洲一区二区三区喷水 | 永久免费观看国产裸体美女 | 国产精品二区一区二区aⅴ污介绍 | 日产国产精品亚洲系列 | 欧美人与牲动交xxxx | 久久人人爽人人爽人人片ⅴ | 欧美日韩久久久精品a片 | 98国产精品综合一区二区三区 | 精品夜夜澡人妻无码av蜜桃 | 成人试看120秒体验区 | 国产艳妇av在线观看果冻传媒 | 亚洲成a人片在线观看无码3d | 高清无码午夜福利视频 | 色欲av亚洲一区无码少妇 | 老子影院午夜伦不卡 | 色一情一乱一伦一视频免费看 | 啦啦啦www在线观看免费视频 | 骚片av蜜桃精品一区 | 一本大道久久东京热无码av | 精品无码av一区二区三区 | 99久久无码一区人妻 | 日韩精品成人一区二区三区 | 欧美日韩在线亚洲综合国产人 | 成人性做爰aaa片免费看 | 日本在线高清不卡免费播放 | 人妻少妇精品无码专区动漫 | 性色av无码免费一区二区三区 | 国产九九九九九九九a片 | 午夜无码区在线观看 | 无码人妻丰满熟妇区五十路百度 | 国产免费无码一区二区视频 | 国产精品人妻一区二区三区四 | 国内少妇偷人精品视频免费 | 国产乡下妇女做爰 | 欧美黑人巨大xxxxx | 一个人免费观看的www视频 | 清纯唯美经典一区二区 | 无遮挡国产高潮视频免费观看 | 国产热a欧美热a在线视频 | 又粗又大又硬毛片免费看 | 久久 国产 尿 小便 嘘嘘 | 国产亚洲精品久久久闺蜜 | 国产后入清纯学生妹 | 日本一区二区更新不卡 | 窝窝午夜理论片影院 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲成a人片在线观看日本 | 国产精品亚洲专区无码不卡 | 又大又紧又粉嫩18p少妇 | 丰满少妇熟乱xxxxx视频 | 亚洲色大成网站www | 色欲久久久天天天综合网精品 | 永久免费观看美女裸体的网站 | 无遮无挡爽爽免费视频 | 欧美喷潮久久久xxxxx | 成人亚洲精品久久久久 | 久久97精品久久久久久久不卡 | 露脸叫床粗话东北少妇 | 波多野结衣av一区二区全免费观看 | 亚洲一区二区三区四区 | 国产在热线精品视频 | 国产成人精品必看 | 无码福利日韩神码福利片 | 色综合久久88色综合天天 | 久久99精品国产麻豆 | 好屌草这里只有精品 | 成人精品一区二区三区中文字幕 | 无码播放一区二区三区 | 国产精品手机免费 | 国产成人精品视频ⅴa片软件竹菊 | 性做久久久久久久免费看 | 俺去俺来也在线www色官网 | 无码人妻出轨黑人中文字幕 | 人妻夜夜爽天天爽三区 | 国产亚洲精品精品国产亚洲综合 | 久久久久久av无码免费看大片 | 少妇邻居内射在线 | 国产成人久久精品流白浆 | 99久久人妻精品免费二区 | 国产莉萝无码av在线播放 | 丰满少妇人妻久久久久久 | 丰满人妻翻云覆雨呻吟视频 | 男人扒开女人内裤强吻桶进去 | 精品人妻中文字幕有码在线 | 青草视频在线播放 | 中文字幕无码乱人伦 | 色综合久久88色综合天天 | 日韩欧美中文字幕公布 | 午夜福利电影 | 国模大胆一区二区三区 | 婷婷丁香五月天综合东京热 | 久久zyz资源站无码中文动漫 | 精品国产精品久久一区免费式 | 人人妻人人澡人人爽人人精品 | 国内少妇偷人精品视频免费 | 永久免费精品精品永久-夜色 | 国产亚洲欧美在线专区 | 在线观看免费人成视频 | 伊人久久大香线焦av综合影院 | 人妻插b视频一区二区三区 | 久久伊人色av天堂九九小黄鸭 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产精品无码mv在线观看 | 欧美喷潮久久久xxxxx | 97人妻精品一区二区三区 | 性史性农村dvd毛片 | 亚洲欧洲无卡二区视頻 | 亚洲国产精品无码久久久久高潮 | 亚洲人成网站免费播放 | 中文久久乱码一区二区 | 扒开双腿吃奶呻吟做受视频 | 亚洲小说图区综合在线 | 夜精品a片一区二区三区无码白浆 | 98国产精品综合一区二区三区 | 国产激情精品一区二区三区 | 嫩b人妻精品一区二区三区 | 亚欧洲精品在线视频免费观看 | 三级4级全黄60分钟 | 成人性做爰aaa片免费看不忠 | av在线亚洲欧洲日产一区二区 | 在线a亚洲视频播放在线观看 | 成人片黄网站色大片免费观看 | 国产另类ts人妖一区二区 | 国产美女极度色诱视频www | 18禁止看的免费污网站 | 国产亚洲精品久久久久久久久动漫 | 亚洲精品中文字幕久久久久 | 国精品人妻无码一区二区三区蜜柚 | 久久久久99精品成人片 | 少妇人妻大乳在线视频 | 一本大道久久东京热无码av | 无码精品人妻一区二区三区av | 乱人伦人妻中文字幕无码 | av人摸人人人澡人人超碰下载 | 日韩精品一区二区av在线 | 国产成人精品必看 | 国产亚洲视频中文字幕97精品 | 精品水蜜桃久久久久久久 | 国产suv精品一区二区五 | 亚洲经典千人经典日产 | 亚洲国产高清在线观看视频 | 欧美性黑人极品hd | 国产精品.xx视频.xxtv | 天天av天天av天天透 | 日本xxxx色视频在线观看免费 | 高潮毛片无遮挡高清免费 | 久久国语露脸国产精品电影 | 人人妻人人澡人人爽精品欧美 | 樱花草在线社区www | 精品国偷自产在线视频 | 大色综合色综合网站 | 久久久无码中文字幕久... | 牲欲强的熟妇农村老妇女 | 丰满人妻被黑人猛烈进入 | 国产色视频一区二区三区 | 岛国片人妻三上悠亚 | 欧美第一黄网免费网站 | 奇米影视7777久久精品 | 国产无遮挡又黄又爽免费视频 | 国产成人综合色在线观看网站 | 人人妻人人澡人人爽欧美一区九九 | 国模大胆一区二区三区 | 狂野欧美性猛交免费视频 | 国产97在线 | 亚洲 | 黑人玩弄人妻中文在线 | 国产精品福利视频导航 | 麻豆精品国产精华精华液好用吗 | 55夜色66夜色国产精品视频 | 国产黄在线观看免费观看不卡 | 久热国产vs视频在线观看 | 欧美猛少妇色xxxxx | 午夜时刻免费入口 | 国产精品.xx视频.xxtv | 人人妻人人澡人人爽人人精品浪潮 | 7777奇米四色成人眼影 | 最近的中文字幕在线看视频 | 午夜精品一区二区三区的区别 | 亚洲理论电影在线观看 | 国产美女精品一区二区三区 | 国产三级久久久精品麻豆三级 | 亚洲天堂2017无码中文 | 亚洲色欲色欲欲www在线 | 中文字幕av无码一区二区三区电影 | 久久伊人色av天堂九九小黄鸭 | 午夜精品一区二区三区在线观看 | 中文精品无码中文字幕无码专区 | 无码国内精品人妻少妇 | 国产精品久免费的黄网站 | 欧美熟妇另类久久久久久不卡 | 午夜福利电影 | 伊在人天堂亚洲香蕉精品区 | 一个人看的视频www在线 | 亚洲精品一区二区三区在线 | 国产欧美精品一区二区三区 | 麻豆人妻少妇精品无码专区 | 亚洲精品国产a久久久久久 | 精品欧洲av无码一区二区三区 | 亚洲自偷自拍另类第1页 | 国产一区二区三区四区五区加勒比 | 最新国产乱人伦偷精品免费网站 | 亚洲国产精品毛片av不卡在线 | 老司机亚洲精品影院无码 | 人人妻人人澡人人爽精品欧美 | 色噜噜亚洲男人的天堂 | 亚洲最大成人网站 | 欧美丰满老熟妇xxxxx性 | 久久亚洲国产成人精品性色 | 一个人看的www免费视频在线观看 | 人妻夜夜爽天天爽三区 | 久久久久久国产精品无码下载 | 俄罗斯老熟妇色xxxx | 久久亚洲精品成人无码 | 日本高清一区免费中文视频 | 人妻少妇精品无码专区二区 | 国产av剧情md精品麻豆 | 色情久久久av熟女人妻网站 | 熟妇人妻无乱码中文字幕 | 人妻少妇精品无码专区动漫 | 在线观看国产一区二区三区 | 久久精品国产精品国产精品污 | 中文字幕乱码亚洲无线三区 | 亚洲 另类 在线 欧美 制服 | 欧美成人家庭影院 | 亚洲精品无码人妻无码 | 中文字幕人妻无码一区二区三区 | 丰满肥臀大屁股熟妇激情视频 | 色一情一乱一伦一视频免费看 | 亚洲精品综合一区二区三区在线 | 国产成人午夜福利在线播放 | 亚洲人成网站免费播放 | 无码人妻av免费一区二区三区 | 国产亚洲视频中文字幕97精品 | 亚洲欧美日韩成人高清在线一区 | 无码人中文字幕 | 久久婷婷五月综合色国产香蕉 | 亚洲欧洲日本综合aⅴ在线 | 色欲av亚洲一区无码少妇 | 日本精品久久久久中文字幕 | 久久亚洲中文字幕精品一区 | 久久久中文字幕日本无吗 | 成熟妇人a片免费看网站 | 亚洲国产精品一区二区美利坚 | 高潮毛片无遮挡高清免费视频 | 男女超爽视频免费播放 | 婷婷五月综合缴情在线视频 | 美女黄网站人色视频免费国产 | 少妇被黑人到高潮喷出白浆 | 正在播放东北夫妻内射 | 成人一在线视频日韩国产 | 亚洲熟女一区二区三区 | 我要看www免费看插插视频 | 久久久久久国产精品无码下载 | 国产偷自视频区视频 | 成人精品视频一区二区三区尤物 | 国产激情无码一区二区app | 精品亚洲韩国一区二区三区 | 六十路熟妇乱子伦 | 午夜无码区在线观看 | 亚洲日韩精品欧美一区二区 | 伊人色综合久久天天小片 | 中文字幕人妻无码一夲道 | 熟女体下毛毛黑森林 | 18禁止看的免费污网站 | 久久天天躁夜夜躁狠狠 | 一区二区三区乱码在线 | 欧洲 | 成年美女黄网站色大免费全看 | 最新国产乱人伦偷精品免费网站 | 久久国产精品偷任你爽任你 | 国产精品欧美成人 | 久久亚洲a片com人成 | 日本护士xxxxhd少妇 | 欧美丰满老熟妇xxxxx性 | 亚洲成av人影院在线观看 | 日欧一片内射va在线影院 | 亚洲一区二区三区偷拍女厕 | 18禁黄网站男男禁片免费观看 | 久久综合给合久久狠狠狠97色 | 国内综合精品午夜久久资源 | 性做久久久久久久免费看 | 日韩精品无码一本二本三本色 | 亚洲色欲色欲天天天www | 在线观看国产午夜福利片 | 国产区女主播在线观看 | 亚洲熟妇色xxxxx欧美老妇 | 精品国产乱码久久久久乱码 | 午夜精品一区二区三区的区别 | 国模大胆一区二区三区 | 男女性色大片免费网站 | 综合网日日天干夜夜久久 | 内射老妇bbwx0c0ck | 色老头在线一区二区三区 | 高清无码午夜福利视频 | 51国偷自产一区二区三区 | 人人爽人人澡人人人妻 | 蜜臀aⅴ国产精品久久久国产老师 | 国产精品人妻一区二区三区四 | 丰满诱人的人妻3 | 真人与拘做受免费视频 | 综合网日日天干夜夜久久 | 夜夜影院未满十八勿进 | 欧美性色19p | 亲嘴扒胸摸屁股激烈网站 | 中文字幕人成乱码熟女app | 麻豆国产丝袜白领秘书在线观看 | 亚洲人成无码网www | 国产成人综合美国十次 | 男人扒开女人内裤强吻桶进去 | 学生妹亚洲一区二区 | 一本大道伊人av久久综合 | 少妇人妻av毛片在线看 | 国产成人无码av片在线观看不卡 | 日欧一片内射va在线影院 | 一本久久a久久精品vr综合 | 亚洲国产精品久久久天堂 | 黑人巨大精品欧美一区二区 | 国产精品久久精品三级 | 波多野结衣高清一区二区三区 | 国产精品二区一区二区aⅴ污介绍 | 久久综合狠狠综合久久综合88 | 色窝窝无码一区二区三区色欲 | 日韩精品乱码av一区二区 | 人人妻人人澡人人爽精品欧美 | 性欧美videos高清精品 | 国产亚洲精品精品国产亚洲综合 | 国产婷婷色一区二区三区在线 | 久久久久99精品成人片 | 国产麻豆精品精东影业av网站 | 国产情侣作爱视频免费观看 | 麻豆国产丝袜白领秘书在线观看 | 久久婷婷五月综合色国产香蕉 | 西西人体www44rt大胆高清 | 久久国产精品二国产精品 | 综合人妻久久一区二区精品 | 欧美zoozzooz性欧美 | 亚洲精品中文字幕久久久久 | 久久国产精品偷任你爽任你 | 精品亚洲韩国一区二区三区 | 四虎国产精品免费久久 | 大肉大捧一进一出视频出来呀 | 天堂无码人妻精品一区二区三区 | 亚洲欧美精品伊人久久 | 色综合久久网 | 国产一区二区三区影院 | 久久综合网欧美色妞网 | 日日麻批免费40分钟无码 | 亚洲成a人片在线观看日本 | 色婷婷av一区二区三区之红樱桃 | 无码一区二区三区在线 | 7777奇米四色成人眼影 | 一二三四在线观看免费视频 | 欧美野外疯狂做受xxxx高潮 | 无码精品国产va在线观看dvd | 国产精品无码永久免费888 | 欧美人妻一区二区三区 | 波多野42部无码喷潮在线 | 装睡被陌生人摸出水好爽 | 日韩人妻系列无码专区 | 免费无码的av片在线观看 | 动漫av网站免费观看 | 精品国产乱码久久久久乱码 | 亚洲小说图区综合在线 | 国产三级精品三级男人的天堂 | 成人免费视频一区二区 | 好屌草这里只有精品 | 午夜丰满少妇性开放视频 | 熟女俱乐部五十路六十路av | 扒开双腿疯狂进出爽爽爽视频 | 亚洲熟妇色xxxxx欧美老妇 | 扒开双腿疯狂进出爽爽爽视频 | 亚洲色成人中文字幕网站 | 丰满人妻翻云覆雨呻吟视频 | 男人扒开女人内裤强吻桶进去 | 成熟人妻av无码专区 | 人妻夜夜爽天天爽三区 | 初尝人妻少妇中文字幕 | 日本精品久久久久中文字幕 | yw尤物av无码国产在线观看 | 国产精品亚洲专区无码不卡 | 久久国语露脸国产精品电影 | 乱码av麻豆丝袜熟女系列 | 国产 浪潮av性色四虎 | 国产人妻精品一区二区三区 | 久久人人爽人人爽人人片ⅴ | 成人女人看片免费视频放人 | 国产乱人偷精品人妻a片 | 99riav国产精品视频 | 小鲜肉自慰网站xnxx | 亚洲狠狠婷婷综合久久 | 国产三级精品三级男人的天堂 | 亚洲人成影院在线观看 | 亚洲日本一区二区三区在线 | 一本久久伊人热热精品中文字幕 | 成人精品视频一区二区 | 人人妻人人澡人人爽欧美一区九九 | 国产农村乱对白刺激视频 | 日本精品久久久久中文字幕 | 国产精品无码一区二区桃花视频 | 一本久道久久综合婷婷五月 | 久久精品国产日本波多野结衣 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 偷窥日本少妇撒尿chinese | 午夜精品一区二区三区的区别 | 成熟人妻av无码专区 | 欧美zoozzooz性欧美 | 国产无套内射久久久国产 | 自拍偷自拍亚洲精品被多人伦好爽 | 高中生自慰www网站 | 狠狠综合久久久久综合网 | 亚洲人成无码网www | 久久精品国产日本波多野结衣 | 国产免费久久精品国产传媒 | 无码av岛国片在线播放 | 亚洲a无码综合a国产av中文 | 无码人妻精品一区二区三区下载 | 日本精品久久久久中文字幕 | 色 综合 欧美 亚洲 国产 | 少妇性俱乐部纵欲狂欢电影 | 久久精品国产亚洲精品 | 人妻夜夜爽天天爽三区 | 国产亚洲精品久久久久久国模美 | yw尤物av无码国产在线观看 | 欧美一区二区三区视频在线观看 | 日本大香伊一区二区三区 | 国产人妖乱国产精品人妖 | 奇米影视888欧美在线观看 | 欧美激情一区二区三区成人 | 青春草在线视频免费观看 | 亚洲成av人影院在线观看 | 亚洲欧美日韩成人高清在线一区 | 玩弄中年熟妇正在播放 | 中文字幕亚洲情99在线 | 内射欧美老妇wbb | 人妻少妇精品视频专区 | 中国女人内谢69xxxxxa片 | 免费无码av一区二区 | 丁香啪啪综合成人亚洲 | 国产真实夫妇视频 | 久久天天躁夜夜躁狠狠 | 亚洲无人区午夜福利码高清完整版 | 伊人久久婷婷五月综合97色 | 久久www免费人成人片 | 97精品人妻一区二区三区香蕉 | 国产精品-区区久久久狼 | aⅴ在线视频男人的天堂 | 少妇被粗大的猛进出69影院 | 国产精品高潮呻吟av久久 | 久久久久久久久蜜桃 | 国产精品.xx视频.xxtv | 无码毛片视频一区二区本码 | 亚洲午夜无码久久 | 欧美一区二区三区 | 亚洲成a人片在线观看日本 | 国产性生交xxxxx无码 | 国产成人亚洲综合无码 | 欧美精品一区二区精品久久 | 免费播放一区二区三区 | 国产三级精品三级男人的天堂 | 天下第一社区视频www日本 | 日韩少妇白浆无码系列 | 精品人妻av区 | 天天爽夜夜爽夜夜爽 | 久久精品女人天堂av免费观看 | 国産精品久久久久久久 | 无遮无挡爽爽免费视频 | 欧美日韩一区二区三区自拍 | 亚洲欧美精品aaaaaa片 | 中文字幕精品av一区二区五区 | 西西人体www44rt大胆高清 | 日产精品99久久久久久 | 欧美精品一区二区精品久久 | 免费男性肉肉影院 | 在线a亚洲视频播放在线观看 | 亚洲精品中文字幕久久久久 | 亚洲色偷偷偷综合网 | 色一情一乱一伦一区二区三欧美 | 天天摸天天碰天天添 | 大胆欧美熟妇xx | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲人成人无码网www国产 | 人妻无码αv中文字幕久久琪琪布 | 中文字幕人妻无码一区二区三区 | 亚洲一区二区三区国产精华液 | 国产精品亚洲综合色区韩国 | 精品欧洲av无码一区二区三区 | 色偷偷人人澡人人爽人人模 | 人人爽人人爽人人片av亚洲 | 野外少妇愉情中文字幕 | 中文字幕乱妇无码av在线 | 正在播放老肥熟妇露脸 | 中文久久乱码一区二区 | 日日碰狠狠躁久久躁蜜桃 | 国产偷自视频区视频 | 天天躁日日躁狠狠躁免费麻豆 | 一本久道久久综合狠狠爱 | 免费无码午夜福利片69 | 亚洲成a人片在线观看无码 | 亚洲国产欧美日韩精品一区二区三区 | 久久精品国产99精品亚洲 | 色欲人妻aaaaaaa无码 | 天堂亚洲免费视频 | 成人无码精品1区2区3区免费看 | 亚洲人亚洲人成电影网站色 | 鲁一鲁av2019在线 | 玩弄少妇高潮ⅹxxxyw | 国产精品亚洲lv粉色 | 久久久精品成人免费观看 | 亚洲精品午夜国产va久久成人 | 一本无码人妻在中文字幕免费 | 影音先锋中文字幕无码 | 亚洲精品午夜无码电影网 | 亚洲色成人中文字幕网站 | 中国大陆精品视频xxxx | 久久精品国产大片免费观看 | 人妻与老人中文字幕 | 东京热无码av男人的天堂 | 性色欲网站人妻丰满中文久久不卡 | 亚洲一区av无码专区在线观看 | 成人亚洲精品久久久久软件 | 玩弄中年熟妇正在播放 | 亚洲人成影院在线无码按摩店 | 欧美日本日韩 | 国产精品人人妻人人爽 | 成人一在线视频日韩国产 | 国产激情一区二区三区 | 亚洲乱码日产精品bd | 漂亮人妻洗澡被公强 日日躁 | 97久久超碰中文字幕 | 熟妇人妻无码xxx视频 | 国产亚av手机在线观看 | 日本熟妇人妻xxxxx人hd | 成年美女黄网站色大免费全看 | 高潮毛片无遮挡高清免费视频 | 亚洲第一无码av无码专区 | 亚洲国产精品美女久久久久 | 国产午夜精品一区二区三区嫩草 | 亚洲精品一区二区三区四区五区 | 欧美成人高清在线播放 | 国产香蕉尹人综合在线观看 | www国产亚洲精品久久久日本 | 亚洲狠狠婷婷综合久久 | 亚洲精品国产第一综合99久久 | 少妇无码av无码专区在线观看 | 色婷婷久久一区二区三区麻豆 | 日本一区二区三区免费播放 | 日韩视频 中文字幕 视频一区 | 99久久亚洲精品无码毛片 | 中文字幕+乱码+中文字幕一区 | 欧美日韩视频无码一区二区三 | 在线欧美精品一区二区三区 | 久久久久久久久蜜桃 | 国色天香社区在线视频 | 亚洲天堂2017无码 | 一本大道久久东京热无码av | 国产xxx69麻豆国语对白 | 97精品国产97久久久久久免费 | 久久综合激激的五月天 | 中文字幕乱码人妻二区三区 | 日本又色又爽又黄的a片18禁 | 丰满人妻精品国产99aⅴ | 精品一区二区三区无码免费视频 | 18无码粉嫩小泬无套在线观看 | 奇米影视7777久久精品人人爽 | 国产又粗又硬又大爽黄老大爷视 | 日日麻批免费40分钟无码 | 精品国产乱码久久久久乱码 | 日韩精品a片一区二区三区妖精 | 欧美人与善在线com | 精品夜夜澡人妻无码av蜜桃 | 人妻夜夜爽天天爽三区 | 国产9 9在线 | 中文 | 性做久久久久久久久 | 97夜夜澡人人双人人人喊 | 国产热a欧美热a在线视频 | 国产一区二区三区四区五区加勒比 | 久久综合色之久久综合 | 国产精品亚洲综合色区韩国 | 无码中文字幕色专区 | 久久精品中文字幕一区 | 成人精品视频一区二区 | 欧美国产亚洲日韩在线二区 | 午夜无码区在线观看 | 久久久久久久人妻无码中文字幕爆 | 欧美变态另类xxxx | 天堂а√在线地址中文在线 | 乱码午夜-极国产极内射 | 午夜性刺激在线视频免费 | 久久久久免费看成人影片 | 国产97色在线 | 免 | 欧美 日韩 人妻 高清 中文 | 精品无人国产偷自产在线 | 精品欧洲av无码一区二区三区 | 日韩人妻系列无码专区 | аⅴ资源天堂资源库在线 | 大地资源网第二页免费观看 | 亚洲 激情 小说 另类 欧美 | 亚洲乱亚洲乱妇50p | 国产三级精品三级男人的天堂 | 久久久久亚洲精品中文字幕 | 欧美日韩在线亚洲综合国产人 | 奇米影视7777久久精品人人爽 | 天堂а√在线地址中文在线 | 男女性色大片免费网站 | 精品久久久中文字幕人妻 | 少妇高潮一区二区三区99 | 色妞www精品免费视频 | 国产免费观看黄av片 | 人人妻人人澡人人爽人人精品 | 国产成人无码专区 | 又湿又紧又大又爽a视频国产 | 国内精品久久毛片一区二区 | 成年女人永久免费看片 | 亚洲国产精品无码久久久久高潮 | 国产精品-区区久久久狼 | 亚洲中文字幕无码中文字在线 | 天干天干啦夜天干天2017 | 日韩少妇白浆无码系列 | 福利一区二区三区视频在线观看 | 欧美大屁股xxxxhd黑色 | 中文字幕av伊人av无码av | 狂野欧美激情性xxxx | 国产激情无码一区二区 | 乱码av麻豆丝袜熟女系列 | 人人爽人人澡人人高潮 | 日本又色又爽又黄的a片18禁 | 亚洲日本一区二区三区在线 | 精品人妻人人做人人爽夜夜爽 | 国产午夜视频在线观看 | 国产在线一区二区三区四区五区 | 7777奇米四色成人眼影 | 狠狠躁日日躁夜夜躁2020 | 亚洲一区二区三区在线观看网站 | 丰满人妻一区二区三区免费视频 | 少妇太爽了在线观看 | 久久亚洲日韩精品一区二区三区 | 日本精品人妻无码免费大全 | 性色欲网站人妻丰满中文久久不卡 | 亚洲成a人一区二区三区 | 精品国产一区二区三区av 性色 | 精品无码国产一区二区三区av | 久久久久se色偷偷亚洲精品av | 亚洲国产精品久久久久久 | 激情爆乳一区二区三区 | 中文字幕日韩精品一区二区三区 | 久久天天躁夜夜躁狠狠 | 婷婷丁香六月激情综合啪 | 无码人妻少妇伦在线电影 | 久久精品成人欧美大片 | 久久精品人人做人人综合试看 | 狠狠色欧美亚洲狠狠色www | 久久精品中文字幕大胸 | 天天av天天av天天透 | 亚洲精品午夜无码电影网 | 丝袜美腿亚洲一区二区 | 国产热a欧美热a在线视频 | 日韩少妇白浆无码系列 | 岛国片人妻三上悠亚 | 色噜噜亚洲男人的天堂 | 亚洲综合伊人久久大杳蕉 | 国产精品理论片在线观看 | 国产小呦泬泬99精品 | 久久亚洲国产成人精品性色 | 久久五月精品中文字幕 | 性欧美牲交在线视频 | 久久人妻内射无码一区三区 | 九九在线中文字幕无码 | 国产性生交xxxxx无码 | 免费观看的无遮挡av | 四虎影视成人永久免费观看视频 | 久久午夜无码鲁丝片午夜精品 | 人人超人人超碰超国产 | 强奷人妻日本中文字幕 | 亚洲另类伦春色综合小说 | 国产精品久久久午夜夜伦鲁鲁 | 一本无码人妻在中文字幕免费 | 中国女人内谢69xxxxxa片 | 99精品视频在线观看免费 | 天堂亚洲2017在线观看 | 国产婷婷色一区二区三区在线 | 亚洲国产av精品一区二区蜜芽 | 国产精品人人妻人人爽 | 亚洲国产精品久久久久久 | 亚洲中文字幕乱码av波多ji | v一区无码内射国产 | 免费中文字幕日韩欧美 | 一本久久a久久精品vr综合 | 久久这里只有精品视频9 | 亚洲精品久久久久久久久久久 | 精品无码国产一区二区三区av | 自拍偷自拍亚洲精品被多人伦好爽 | 乱中年女人伦av三区 | 日日碰狠狠躁久久躁蜜桃 | 亚洲乱亚洲乱妇50p | 粉嫩少妇内射浓精videos | 久久综合给合久久狠狠狠97色 | 国产疯狂伦交大片 | 久久久久久av无码免费看大片 | 乱码午夜-极国产极内射 | 成人影院yy111111在线观看 | 久久久久人妻一区精品色欧美 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 中文字幕人妻无码一区二区三区 | 青青青爽视频在线观看 | 最近免费中文字幕中文高清百度 | 国产亚洲视频中文字幕97精品 | 窝窝午夜理论片影院 | 亚洲中文字幕va福利 | 精品国产一区av天美传媒 | 国产精品.xx视频.xxtv | 熟妇人妻无码xxx视频 | 捆绑白丝粉色jk震动捧喷白浆 | 国产亚洲精品久久久久久 | 九九久久精品国产免费看小说 | 国产成人无码专区 | 国产成人无码a区在线观看视频app | 国产乱子伦视频在线播放 | 我要看www免费看插插视频 | 无码一区二区三区在线 | 国产尤物精品视频 | 成人无码精品一区二区三区 | 国产香蕉尹人综合在线观看 | 少妇人妻偷人精品无码视频 | www一区二区www免费 | 双乳奶水饱满少妇呻吟 | 国产精品对白交换视频 | 亚洲国产精品一区二区美利坚 | 中文精品无码中文字幕无码专区 | 国产亲子乱弄免费视频 | 国产亚洲美女精品久久久2020 | 丝袜人妻一区二区三区 | 国产精品久久国产精品99 | 一本加勒比波多野结衣 | 色婷婷久久一区二区三区麻豆 | 蜜臀aⅴ国产精品久久久国产老师 | 小鲜肉自慰网站xnxx | 国产熟妇另类久久久久 | 97色伦图片97综合影院 | 伦伦影院午夜理论片 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲性无码av中文字幕 | 午夜性刺激在线视频免费 | 亚洲自偷精品视频自拍 | 兔费看少妇性l交大片免费 | 欧美黑人性暴力猛交喷水 | 亚洲乱码日产精品bd | 97人妻精品一区二区三区 | av无码久久久久不卡免费网站 | 精品国产国产综合精品 | 欧美人妻一区二区三区 | 国产精品亚洲综合色区韩国 | 亚洲欧美国产精品久久 | 国产精品爱久久久久久久 | 人妻少妇精品无码专区动漫 | 大地资源网第二页免费观看 | 亚洲 a v无 码免 费 成 人 a v | 国产做国产爱免费视频 | 亚洲精品国产第一综合99久久 | 中文字幕无码av激情不卡 | 初尝人妻少妇中文字幕 | 无码一区二区三区在线观看 | 亚洲国产精品无码久久久久高潮 | 夜精品a片一区二区三区无码白浆 | 清纯唯美经典一区二区 | 嫩b人妻精品一区二区三区 | 中文字幕av无码一区二区三区电影 | 国产在线一区二区三区四区五区 | 一本色道久久综合亚洲精品不卡 | 国产av一区二区三区最新精品 | 免费无码一区二区三区蜜桃大 | 成人免费视频视频在线观看 免费 | 日韩精品一区二区av在线 | 久久国语露脸国产精品电影 | 亚洲欧美日韩成人高清在线一区 | 欧美成人午夜精品久久久 | 男女猛烈xx00免费视频试看 | 色婷婷久久一区二区三区麻豆 | 国内精品人妻无码久久久影院蜜桃 | 55夜色66夜色国产精品视频 | 网友自拍区视频精品 | 夜先锋av资源网站 | 国产人妻精品一区二区三区 | 网友自拍区视频精品 | 久青草影院在线观看国产 | 久久亚洲a片com人成 | www国产亚洲精品久久网站 | 日本一区二区三区免费播放 | 国产午夜无码视频在线观看 | 久久国语露脸国产精品电影 | 高清国产亚洲精品自在久久 | 免费无码肉片在线观看 | 疯狂三人交性欧美 | 国产乱人伦av在线无码 | 国产av一区二区精品久久凹凸 | 最近免费中文字幕中文高清百度 | 乌克兰少妇性做爰 | 免费视频欧美无人区码 | 亚洲 欧美 激情 小说 另类 | 少妇的肉体aa片免费 | 丝袜人妻一区二区三区 | 久久五月精品中文字幕 | 暴力强奷在线播放无码 | 娇妻被黑人粗大高潮白浆 | 一本一道久久综合久久 | а√天堂www在线天堂小说 | 亚洲欧美日韩成人高清在线一区 | 澳门永久av免费网站 | 国产成人精品无码播放 | 国产情侣作爱视频免费观看 | 免费观看的无遮挡av | 国产女主播喷水视频在线观看 | 久久久久免费精品国产 | 十八禁真人啪啪免费网站 | 国产精品沙发午睡系列 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 国产美女极度色诱视频www | 久久久久久av无码免费看大片 | 我要看www免费看插插视频 | 少妇无码一区二区二三区 | 国产亚洲精品久久久久久久久动漫 | 亚洲の无码国产の无码步美 | 国产三级精品三级男人的天堂 | 人人妻人人澡人人爽精品欧美 | 蜜臀aⅴ国产精品久久久国产老师 | 色婷婷综合激情综在线播放 | 中文字幕日产无线码一区 | 窝窝午夜理论片影院 | 在线亚洲高清揄拍自拍一品区 | 国产suv精品一区二区五 | 国产又爽又黄又刺激的视频 | 精品无码国产自产拍在线观看蜜 | 亚洲成av人综合在线观看 | 欧美人妻一区二区三区 | 中国大陆精品视频xxxx | 在线欧美精品一区二区三区 | 97久久精品无码一区二区 | 强伦人妻一区二区三区视频18 | 亚洲精品中文字幕久久久久 | 超碰97人人做人人爱少妇 | 蜜桃视频插满18在线观看 | 欧美一区二区三区 | 亚洲成av人片天堂网无码】 | 中文字幕无码日韩专区 | 欧美freesex黑人又粗又大 | 久久99热只有频精品8 | 亚洲精品鲁一鲁一区二区三区 | 女高中生第一次破苞av | 东京一本一道一二三区 | 国产精品99久久精品爆乳 | 午夜精品久久久内射近拍高清 | 亚洲综合无码一区二区三区 | 荡女精品导航 | 老司机亚洲精品影院无码 | 日韩av无码中文无码电影 | 乱码午夜-极国产极内射 | 精品熟女少妇av免费观看 | 黑人大群体交免费视频 | 97无码免费人妻超级碰碰夜夜 | 荫蒂添的好舒服视频囗交 | 久久熟妇人妻午夜寂寞影院 | 久久精品女人天堂av免费观看 | 中文字幕色婷婷在线视频 | 白嫩日本少妇做爰 | 成人免费无码大片a毛片 | 国产av一区二区精品久久凹凸 | 麻花豆传媒剧国产免费mv在线 | 午夜时刻免费入口 | 老熟女重囗味hdxx69 | 精品久久久久久人妻无码中文字幕 | 一本久道高清无码视频 | 少妇性俱乐部纵欲狂欢电影 | 国产人妻精品一区二区三区不卡 | 老熟女重囗味hdxx69 | 无码福利日韩神码福利片 | 天海翼激烈高潮到腰振不止 | 无码吃奶揉捏奶头高潮视频 | 欧美 日韩 亚洲 在线 | 精品国产aⅴ无码一区二区 | 亚洲中文字幕无码一久久区 | 亚洲精品一区二区三区婷婷月 | 久久亚洲精品成人无码 | 国产av无码专区亚洲a∨毛片 | 精品乱码久久久久久久 | 98国产精品综合一区二区三区 | 无码中文字幕色专区 | 久久国产精品偷任你爽任你 | 亚洲娇小与黑人巨大交 | 亚洲综合在线一区二区三区 | 四十如虎的丰满熟妇啪啪 | 又大又硬又黄的免费视频 | 亚洲精品中文字幕乱码 | 国产精品嫩草久久久久 | 粉嫩少妇内射浓精videos | 亚洲自偷自偷在线制服 | 免费乱码人妻系列无码专区 | 狠狠色丁香久久婷婷综合五月 | а√资源新版在线天堂 | 日本一卡二卡不卡视频查询 | 欧美日韩综合一区二区三区 | 亚洲中文字幕无码中字 | 国产 浪潮av性色四虎 | 日本一区二区三区免费高清 | 人人澡人人透人人爽 | 亚拍精品一区二区三区探花 | 一本大道久久东京热无码av | 亚洲区小说区激情区图片区 | 日日摸天天摸爽爽狠狠97 | 三上悠亚人妻中文字幕在线 | 夫妻免费无码v看片 | 超碰97人人做人人爱少妇 | 性史性农村dvd毛片 | 秋霞成人午夜鲁丝一区二区三区 | 蜜桃臀无码内射一区二区三区 | 久久久久久亚洲精品a片成人 | 少妇高潮一区二区三区99 | 欧美精品国产综合久久 | 日韩在线不卡免费视频一区 | 亚洲天堂2017无码 | 国产av一区二区精品久久凹凸 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产乱子伦视频在线播放 | 国产亚洲美女精品久久久2020 | 国产成人午夜福利在线播放 | 内射后入在线观看一区 | 高潮毛片无遮挡高清免费视频 | 波多野结衣 黑人 | 少妇无码吹潮 | 午夜无码区在线观看 | 欧美熟妇另类久久久久久不卡 | 蜜臀av在线播放 久久综合激激的五月天 | 欧美性生交xxxxx久久久 | 日日躁夜夜躁狠狠躁 | 国产疯狂伦交大片 | 国产精品二区一区二区aⅴ污介绍 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 午夜男女很黄的视频 | 丰满人妻翻云覆雨呻吟视频 | 中文无码精品a∨在线观看不卡 | 国产情侣作爱视频免费观看 | 日韩在线不卡免费视频一区 | 老熟妇乱子伦牲交视频 | 久久精品成人欧美大片 | 色婷婷香蕉在线一区二区 | 亚洲欧洲日本无在线码 | 国产香蕉97碰碰久久人人 | 国产精品成人av在线观看 | 亚洲欧美国产精品专区久久 | 丰满少妇人妻久久久久久 | 日日鲁鲁鲁夜夜爽爽狠狠 | 极品尤物被啪到呻吟喷水 | 强开小婷嫩苞又嫩又紧视频 | 国产婷婷色一区二区三区在线 | 人妻中文无码久热丝袜 | 婷婷丁香六月激情综合啪 | 成人一区二区免费视频 | 蜜桃臀无码内射一区二区三区 | 中文久久乱码一区二区 | 精品水蜜桃久久久久久久 | 欧美日韩久久久精品a片 | 狠狠色欧美亚洲狠狠色www | 亚洲伊人久久精品影院 | 东京一本一道一二三区 | 亚洲欧美日韩成人高清在线一区 | 国内精品一区二区三区不卡 | 日本精品人妻无码免费大全 | 国产莉萝无码av在线播放 | 国产艳妇av在线观看果冻传媒 | 国产精品第一国产精品 | 中文字幕乱码中文乱码51精品 | 成人性做爰aaa片免费看不忠 | 波多野结衣av在线观看 | 久久久精品人妻久久影视 | 波多野结衣一区二区三区av免费 | 国产精品丝袜黑色高跟鞋 | 欧美性生交活xxxxxdddd | 色情久久久av熟女人妻网站 | 女人被爽到呻吟gif动态图视看 | 亚洲自偷精品视频自拍 | 日本护士毛茸茸高潮 | 东北女人啪啪对白 | 香蕉久久久久久av成人 | 丝袜 中出 制服 人妻 美腿 | 人妻夜夜爽天天爽三区 | 麻豆精品国产精华精华液好用吗 | 久久视频在线观看精品 | 亚洲精品无码人妻无码 | 欧美日韩精品 | 99久久久无码国产aaa精品 | 成人av无码一区二区三区 | 亚洲国产精品无码久久久久高潮 | 国产疯狂伦交大片 | 呦交小u女精品视频 | 超碰97人人做人人爱少妇 | 色一情一乱一伦一区二区三欧美 | 麻豆精品国产精华精华液好用吗 | 国产97在线 | 亚洲 | 国产在线精品一区二区三区直播 | 中文字幕中文有码在线 | 亚拍精品一区二区三区探花 | 国精产品一品二品国精品69xx | 久久99精品国产麻豆蜜芽 | 少妇性俱乐部纵欲狂欢电影 | 亚洲国产成人av在线观看 | 婷婷丁香五月天综合东京热 | 丰满肥臀大屁股熟妇激情视频 | 性啪啪chinese东北女人 | 久久国产精品精品国产色婷婷 | 免费无码av一区二区 | 国产办公室秘书无码精品99 | 日日夜夜撸啊撸 | 国产在线无码精品电影网 | 国产69精品久久久久app下载 | 欧美日本精品一区二区三区 | 强奷人妻日本中文字幕 | 少妇无码吹潮 | 亚洲欧洲无卡二区视頻 | 成人影院yy111111在线观看 | 日本肉体xxxx裸交 | 日本成熟视频免费视频 | 牲欲强的熟妇农村老妇女视频 | 亚洲乱码国产乱码精品精 | 无码一区二区三区在线 | 美女黄网站人色视频免费国产 | 日本精品人妻无码77777 天堂一区人妻无码 | 特黄特色大片免费播放器图片 | 亚洲精品中文字幕久久久久 | 国产色xx群视频射精 | 久久精品女人天堂av免费观看 | 国产精品久久久久无码av色戒 | 国产在线aaa片一区二区99 | 国产成人精品三级麻豆 | 久久人人爽人人人人片 | 精品成在人线av无码免费看 | 亚洲精品鲁一鲁一区二区三区 | 色婷婷香蕉在线一区二区 | 国产9 9在线 | 中文 | aa片在线观看视频在线播放 | 国内揄拍国内精品少妇国语 | 国产乡下妇女做爰 | 久久综合九色综合97网 | а天堂中文在线官网 | 亚洲爆乳精品无码一区二区三区 | 麻豆md0077饥渴少妇 | 久久综合给合久久狠狠狠97色 | 少妇性l交大片 | 欧美 日韩 人妻 高清 中文 | 亚洲日韩一区二区三区 | 欧美日韩视频无码一区二区三 | 欧美性猛交xxxx富婆 | 日本乱人伦片中文三区 | 天堂а√在线中文在线 | 亚洲精品鲁一鲁一区二区三区 | 精品一区二区三区无码免费视频 | 亚洲日本va午夜在线电影 | 最近中文2019字幕第二页 | 一本色道婷婷久久欧美 | 成人免费视频一区二区 | 久久亚洲国产成人精品性色 | 一本色道婷婷久久欧美 | 熟妇女人妻丰满少妇中文字幕 | 色狠狠av一区二区三区 | 精品国产av色一区二区深夜久久 | a片在线免费观看 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲精品午夜无码电影网 | 香港三级日本三级妇三级 | 欧美日韩综合一区二区三区 | 亚洲一区二区三区四区 | 国产香蕉尹人综合在线观看 | 国产va免费精品观看 | 乱人伦人妻中文字幕无码 | 熟女俱乐部五十路六十路av | 老子影院午夜伦不卡 | 亚洲欧美综合区丁香五月小说 | 大胆欧美熟妇xx | 少妇激情av一区二区 | 亚洲精品久久久久中文第一幕 | 久久久无码中文字幕久... | 人妻少妇精品无码专区二区 | 人妻插b视频一区二区三区 | 国产成人综合在线女婷五月99播放 | 人妻插b视频一区二区三区 | 999久久久国产精品消防器材 | 欧美丰满少妇xxxx性 | 131美女爱做视频 | 国产又爽又黄又刺激的视频 | 伊人久久大香线蕉av一区二区 | 亚洲国产一区二区三区在线观看 | 动漫av网站免费观看 | 自拍偷自拍亚洲精品被多人伦好爽 | 俺去俺来也www色官网 | 国产精品美女久久久网av | 国内精品久久久久久中文字幕 | 成人一在线视频日韩国产 | 东京热无码av男人的天堂 | 伊在人天堂亚洲香蕉精品区 | 欧美国产亚洲日韩在线二区 | 亚洲精品鲁一鲁一区二区三区 | 国产高清av在线播放 | 欧美人与禽猛交狂配 | 免费人成在线视频无码 | 骚片av蜜桃精品一区 | 一个人看的www免费视频在线观看 | 免费网站看v片在线18禁无码 | 国产精品99爱免费视频 | 亚洲欧美国产精品久久 | 国产在线精品一区二区三区直播 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 日本精品少妇一区二区三区 | 亚洲狠狠色丁香婷婷综合 | 国产亲子乱弄免费视频 | 日韩欧美成人免费观看 | 久久综合给合久久狠狠狠97色 | 一本一道久久综合久久 | 精品少妇爆乳无码av无码专区 | 精品无码av一区二区三区 | 国产精品亚洲一区二区三区喷水 | 精品成人av一区二区三区 | 国产成人无码一二三区视频 | www国产亚洲精品久久网站 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 永久免费观看国产裸体美女 | 97久久国产亚洲精品超碰热 | 亚洲中文字幕va福利 | 国产后入清纯学生妹 | 中文字幕乱码人妻无码久久 | 国产黑色丝袜在线播放 | 国产偷自视频区视频 | 欧美国产日韩久久mv | 人妻尝试又大又粗久久 | 麻豆国产人妻欲求不满谁演的 | 亚洲日韩av一区二区三区中文 | 精品久久久久久人妻无码中文字幕 | 人妻尝试又大又粗久久 | 日日天干夜夜狠狠爱 | 无码av免费一区二区三区试看 | 国产成人精品久久亚洲高清不卡 | 一本大道久久东京热无码av | 97久久国产亚洲精品超碰热 | 欧美人与牲动交xxxx | 无套内射视频囯产 | 午夜精品一区二区三区在线观看 | 精品国产一区av天美传媒 | 少妇愉情理伦片bd | 色欲综合久久中文字幕网 | 久久99久久99精品中文字幕 | 最新版天堂资源中文官网 | 久久久国产一区二区三区 | 久久综合狠狠综合久久综合88 | 亚洲一区二区观看播放 | 在线亚洲高清揄拍自拍一品区 | 亚洲自偷自偷在线制服 | 免费网站看v片在线18禁无码 | 日本熟妇人妻xxxxx人hd | 国产午夜亚洲精品不卡下载 | 成人aaa片一区国产精品 | 久久精品国产日本波多野结衣 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲国产欧美日韩精品一区二区三区 | 国产内射老熟女aaaa | 最新版天堂资源中文官网 | 国产欧美亚洲精品a | 成 人 网 站国产免费观看 | 两性色午夜视频免费播放 | 日韩欧美群交p片內射中文 | 无码国内精品人妻少妇 | 亚洲精品国偷拍自产在线麻豆 | 午夜福利不卡在线视频 | 99久久人妻精品免费一区 | 婷婷五月综合激情中文字幕 | 国产成人综合色在线观看网站 | 在线亚洲高清揄拍自拍一品区 | 国产精品久久久久无码av色戒 | 18禁止看的免费污网站 | 无码毛片视频一区二区本码 | 樱花草在线社区www | 午夜福利试看120秒体验区 | 永久免费精品精品永久-夜色 | 1000部啪啪未满十八勿入下载 | 亚拍精品一区二区三区探花 | 久久久精品人妻久久影视 | 中文字幕人妻无码一夲道 | 国产人妻精品一区二区三区不卡 | 婷婷综合久久中文字幕蜜桃三电影 | 7777奇米四色成人眼影 | 欧美怡红院免费全部视频 | 领导边摸边吃奶边做爽在线观看 | 久久久久99精品成人片 | 成人免费无码大片a毛片 | 欧美一区二区三区视频在线观看 | 内射后入在线观看一区 | 中文字幕中文有码在线 | 无码中文字幕色专区 | 国产av人人夜夜澡人人爽麻豆 | 亚洲欧美中文字幕5发布 | 乌克兰少妇xxxx做受 | 国产福利视频一区二区 | 女人被男人爽到呻吟的视频 | 四十如虎的丰满熟妇啪啪 | 无套内谢的新婚少妇国语播放 | 久久午夜无码鲁丝片午夜精品 | 久久久久se色偷偷亚洲精品av | 熟妇女人妻丰满少妇中文字幕 | 在线成人www免费观看视频 | 纯爱无遮挡h肉动漫在线播放 | 曰韩少妇内射免费播放 | 狠狠cao日日穞夜夜穞av | 日产精品99久久久久久 | 国产精品久久久久久亚洲毛片 | 国色天香社区在线视频 | 久久国产自偷自偷免费一区调 | 麻花豆传媒剧国产免费mv在线 | 精品人妻人人做人人爽 | 久久久久人妻一区精品色欧美 | 亚洲精品综合一区二区三区在线 | 丰满少妇熟乱xxxxx视频 | 中文字幕乱码中文乱码51精品 | 青青青爽视频在线观看 | 免费无码肉片在线观看 | 高潮毛片无遮挡高清免费视频 | 国产成人人人97超碰超爽8 | 日本肉体xxxx裸交 | 国产精品内射视频免费 | 97精品人妻一区二区三区香蕉 | 日韩av无码中文无码电影 | 99久久亚洲精品无码毛片 | 色综合天天综合狠狠爱 | 无遮无挡爽爽免费视频 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产精品va在线播放 | 国产精品人人爽人人做我的可爱 | 午夜理论片yy44880影院 | 成人亚洲精品久久久久软件 | 亚洲毛片av日韩av无码 | 久久精品女人的天堂av | 成人三级无码视频在线观看 | √8天堂资源地址中文在线 | 天堂在线观看www | 初尝人妻少妇中文字幕 | 成年美女黄网站色大免费视频 | 中文无码伦av中文字幕 | 亚洲日本va午夜在线电影 | 国精品人妻无码一区二区三区蜜柚 | 久久国内精品自在自线 | 动漫av一区二区在线观看 | 国产无遮挡吃胸膜奶免费看 | 国产午夜福利100集发布 | 东北女人啪啪对白 | 日日噜噜噜噜夜夜爽亚洲精品 | 狠狠色色综合网站 | 熟妇激情内射com | 欧洲极品少妇 | 日韩人妻无码中文字幕视频 | 亚洲aⅴ无码成人网站国产app | 乱人伦人妻中文字幕无码久久网 | 老熟妇仑乱视频一区二区 | 成人亚洲精品久久久久 | 男女性色大片免费网站 | 中文字幕乱码人妻无码久久 | 国产综合久久久久鬼色 | 九月婷婷人人澡人人添人人爽 | 精品一区二区不卡无码av | av香港经典三级级 在线 | 欧美日韩久久久精品a片 | 在线天堂新版最新版在线8 | 精品熟女少妇av免费观看 | 亚洲中文字幕在线无码一区二区 | 日韩欧美成人免费观看 | 日本一卡二卡不卡视频查询 | 无码人妻出轨黑人中文字幕 | 国产内射爽爽大片视频社区在线 | 最新国产乱人伦偷精品免费网站 | 狠狠色噜噜狠狠狠7777奇米 | 少妇性俱乐部纵欲狂欢电影 | 久久无码专区国产精品s | 国产欧美熟妇另类久久久 | 国语自产偷拍精品视频偷 | 国内精品九九久久久精品 | 久久久精品国产sm最大网站 | 欧美三级a做爰在线观看 | 激情五月综合色婷婷一区二区 | 日韩精品a片一区二区三区妖精 | 妺妺窝人体色www婷婷 | 精品偷自拍另类在线观看 | 亚洲国产欧美日韩精品一区二区三区 | 在线观看欧美一区二区三区 | 人人妻人人藻人人爽欧美一区 | 日日夜夜撸啊撸 | 老司机亚洲精品影院 | 99国产精品白浆在线观看免费 | 无套内谢老熟女 | 好男人www社区 | 少妇性l交大片欧洲热妇乱xxx | 亚洲最大成人网站 | 久久国产精品_国产精品 | 久久精品视频在线看15 | 无码av最新清无码专区吞精 | 中文字幕乱码中文乱码51精品 | 99久久精品无码一区二区毛片 | 精品无码成人片一区二区98 | 无套内谢的新婚少妇国语播放 | 国产人成高清在线视频99最全资源 | 日日天日日夜日日摸 | 人人妻人人澡人人爽欧美一区九九 | 国产精品视频免费播放 | 无码一区二区三区在线 | 少妇性l交大片欧洲热妇乱xxx | 无码人妻出轨黑人中文字幕 | 未满小14洗澡无码视频网站 | 成人精品一区二区三区中文字幕 | 成人女人看片免费视频放人 | 99视频精品全部免费免费观看 | 亚洲熟悉妇女xxx妇女av | 在线精品国产一区二区三区 | 内射后入在线观看一区 | 国产精品爱久久久久久久 | 一本久道久久综合婷婷五月 | 国产精品无码一区二区三区不卡 | 国产 精品 自在自线 | 国产av人人夜夜澡人人爽麻豆 | 日韩av无码中文无码电影 | 国产午夜福利亚洲第一 | 兔费看少妇性l交大片免费 | 人妻熟女一区 | 日日躁夜夜躁狠狠躁 | 成人免费视频视频在线观看 免费 | 婷婷丁香五月天综合东京热 | aⅴ在线视频男人的天堂 | 999久久久国产精品消防器材 | 娇妻被黑人粗大高潮白浆 | 亚洲男女内射在线播放 | 又黄又爽又色的视频 | 国产激情综合五月久久 | 人人妻人人藻人人爽欧美一区 | 中文无码精品a∨在线观看不卡 | 在线亚洲高清揄拍自拍一品区 | 真人与拘做受免费视频一 | 欧美老熟妇乱xxxxx | 亚洲国产精品无码久久久久高潮 | 国产精品18久久久久久麻辣 | 蜜臀av无码人妻精品 | 精品国产成人一区二区三区 | 久久婷婷五月综合色国产香蕉 | 日韩无套无码精品 | 国产激情精品一区二区三区 | 亚洲人亚洲人成电影网站色 | 国产极品美女高潮无套在线观看 | 国模大胆一区二区三区 | 国产亚洲精品久久久久久久 | 国产深夜福利视频在线 | 无码吃奶揉捏奶头高潮视频 | 少女韩国电视剧在线观看完整 | 国产超级va在线观看视频 | 狂野欧美性猛交免费视频 | 国产亚洲欧美日韩亚洲中文色 | 亚洲aⅴ无码成人网站国产app | www一区二区www免费 | 久久久国产一区二区三区 | 少妇性荡欲午夜性开放视频剧场 | 又大又硬又黄的免费视频 | 欧美国产日韩久久mv | 老熟妇仑乱视频一区二区 | 国产人妻人伦精品1国产丝袜 | 国产猛烈高潮尖叫视频免费 | 在线精品国产一区二区三区 | 99久久精品国产一区二区蜜芽 | 波多野结衣一区二区三区av免费 | 国产黑色丝袜在线播放 | 成人试看120秒体验区 | 亚洲欧美日韩国产精品一区二区 | 免费观看又污又黄的网站 | 国产精品无码成人午夜电影 | 99久久精品午夜一区二区 | 色欲人妻aaaaaaa无码 | 国产一区二区三区精品视频 | 中文字幕人妻无码一区二区三区 | 天海翼激烈高潮到腰振不止 | 青青草原综合久久大伊人精品 | 给我免费的视频在线观看 | 国产精品香蕉在线观看 | 亚洲色欲久久久综合网东京热 | 日本xxxx色视频在线观看免费 | 思思久久99热只有频精品66 | 熟妇人妻无码xxx视频 | 天天做天天爱天天爽综合网 | 国产无遮挡又黄又爽免费视频 | 欧美三级不卡在线观看 | 秋霞成人午夜鲁丝一区二区三区 | 日韩av无码一区二区三区不卡 | 国产精品爱久久久久久久 | 久久亚洲日韩精品一区二区三区 | 国产性生大片免费观看性 | 欧洲极品少妇 | 欧美精品免费观看二区 | 2019nv天堂香蕉在线观看 | 亚洲熟悉妇女xxx妇女av | 免费看少妇作爱视频 | 久久人人爽人人爽人人片av高清 | 国产黑色丝袜在线播放 | 国产精品第一国产精品 | 亚洲一区av无码专区在线观看 | 丰满肥臀大屁股熟妇激情视频 | 国产在线精品一区二区三区直播 | 中文字幕中文有码在线 | 中文字幕日韩精品一区二区三区 | 国产超碰人人爽人人做人人添 | 欧美丰满少妇xxxx性 | 亚洲成熟女人毛毛耸耸多 | 国产舌乚八伦偷品w中 | 男人和女人高潮免费网站 | 欧美 亚洲 国产 另类 | 精品亚洲成av人在线观看 | 国产一精品一av一免费 | 国产午夜福利100集发布 | 理论片87福利理论电影 | 午夜精品一区二区三区的区别 | 国精产品一区二区三区 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲精品一区二区三区在线观看 | 日日天干夜夜狠狠爱 | 国产精品无套呻吟在线 | 亚洲色欲色欲欲www在线 | 欧洲精品码一区二区三区免费看 | 夜精品a片一区二区三区无码白浆 | 精品无码一区二区三区的天堂 | 亚洲人成网站在线播放942 | 欧美日韩久久久精品a片 | 丰满少妇女裸体bbw | 88国产精品欧美一区二区三区 | 国产成人午夜福利在线播放 | 亚洲精品一区二区三区婷婷月 | 扒开双腿疯狂进出爽爽爽视频 | 国产乱人无码伦av在线a | 99久久无码一区人妻 | 无码人妻丰满熟妇区毛片18 | 亚洲中文无码av永久不收费 | 亚洲欧洲日本无在线码 | 亚洲色成人中文字幕网站 | 久精品国产欧美亚洲色aⅴ大片 | 女人高潮内射99精品 | 国产深夜福利视频在线 | 麻花豆传媒剧国产免费mv在线 | 一二三四社区在线中文视频 | 三上悠亚人妻中文字幕在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 少妇人妻大乳在线视频 | 乱码午夜-极国产极内射 | 国产在线无码精品电影网 | www国产亚洲精品久久久日本 | 色 综合 欧美 亚洲 国产 | 亚洲熟妇色xxxxx欧美老妇 |