日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java集合功能與用法實(shí)例詳解

瀏覽:221日期:2022-09-02 18:13:25

本文實(shí)例講述了Java集合功能與用法。分享給大家供大家參考,具體如下:

本文內(nèi)容: 什么是集合 Collection Iterator List set Map Collections工具類(lèi)

首發(fā)日期:2018-05-17

什么是集合: 集合是一種新容器,集合可以存儲(chǔ)數(shù)量不固定的元素(數(shù)組的空間是固定的,你申請(qǐng)多少空間以后都不能改變),而集合可以動(dòng)態(tài)的增加空間(有些是空間不夠時(shí)新建一個(gè)足夠大的數(shù)組再把原來(lái)的元素移到新的數(shù)組中)。 集合的出現(xiàn)解決的幾個(gè)問(wèn)題: 存儲(chǔ)數(shù)量不等的元素。 定義了數(shù)據(jù)結(jié)構(gòu),所以集合的元素可以依據(jù)數(shù)據(jù)結(jié)構(gòu)來(lái)讀取,比如LinkList(可以理解成鏈表結(jié)構(gòu)的數(shù)組),HashSet(哈希表結(jié)構(gòu)) 可以存儲(chǔ)具有映射關(guān)系的元素(Map) 集合中存儲(chǔ)的元素都是對(duì)象(默認(rèn)取出的也是一個(gè)Object對(duì)象),即使存入的是一個(gè)數(shù)字,也會(huì)轉(zhuǎn)換成 Integer 類(lèi)。 集合存放的只是對(duì)象的引用 java中集合類(lèi)體系主要分為兩類(lèi):主要用于存儲(chǔ)普通元素的Collection、用于存儲(chǔ)具有映射關(guān)系的元素的Map

PS:

jdk1.5和jdk1.8新增的內(nèi)容有點(diǎn)多,現(xiàn)在有點(diǎn)新特性沒(méi)添上,以后有空再加上去吧。 Queue主要為了實(shí)現(xiàn)隊(duì)列功能,這里不講述,有興趣自行查找。Collection:介紹: collection是一個(gè)抽象接口,是List、Set和Queue接口的父接口方法(父接口定義的方法,實(shí)現(xiàn)類(lèi)中都會(huì)有)【具體使用看下面的具體實(shí)現(xiàn)類(lèi)】: 添加元素: 添加一個(gè)元素X:add(X) 添加集合X中全部元素到集合中:addAll(X) 刪除元素: clear():移除此 collection 中的所有元素 remove(x):移除指定元素x removeAll(x):移除集合中另一個(gè)集合x(chóng)的元素 檢查: size():檢測(cè)集合的元素個(gè)數(shù) isEmpty():檢測(cè)集合是否為空,空返回true contains(x):是否包含某元素x containsAll(x):是否包含另一個(gè)集合x(chóng)中的所有元素。 其他: toArray():將集合轉(zhuǎn)成數(shù)組 iterator():返回可以在此集合上進(jìn)行元素迭代的迭代器 equals(x):比較集合是否與x一致。

集合的獲取依賴(lài)于迭代器Iterator。

補(bǔ)充: 下面的各種具體實(shí)現(xiàn)類(lèi)的構(gòu)造方法都支持傳入一個(gè)比較器,用于執(zhí)行非自然排序(比如String的比較是字符,而我們可以定義成按字符長(zhǎng)度排序。)【例子在TreeSet中。】Iterator:介紹: Iterator是一個(gè)接口,它可以對(duì)Collection進(jìn)行元素迭代(如果Collection返回了一個(gè)迭代器的話(huà)) 基本每一個(gè)具體實(shí)現(xiàn)類(lèi)中都實(shí)現(xiàn)了Iterator(內(nèi)部實(shí)現(xiàn)),從而使得Iterator可以迭代所有的Collection的具體實(shí)現(xiàn)類(lèi)的元素。迭代方法: hasNext():如果仍有元素可以迭代,則返回 true。 next():迭代出下一個(gè)元素 remove():刪除迭代器剛越過(guò)的元素(就是剛剛next到的元素)示例:

package 集合;import java.util.ArrayList;import java.util.Iterator;public class IteratorDemo { public static void main(String[] args) { ArrayList q=new ArrayList(); //增 q.add('a'); q.add('b'); q.add('c'); q.add('d'); //使用迭代器迭代 for(Iterator it=q.iterator();it.hasNext();) { Object obj=it.next(); System.out.println(obj);//a b c d if(obj=='a')it.remove(); } //刪除后查看一下 System.out.println(q); }}補(bǔ)充: 對(duì)于List,有一個(gè)特別的迭代器接口:ListIterator,這個(gè)迭代器專(zhuān)用于List,它比普通的接口多出了增加元素、修改元素、正反向迭代功能。 Iterator經(jīng)常與foreach語(yǔ)句來(lái)搭配使用。 但在1.5之后,Collection實(shí)現(xiàn)了Iterable接口,使得集合可以直接迭代了。Java集合功能與用法實(shí)例詳解 List:介紹: List是一個(gè)接口,定義的是存儲(chǔ)的元素是有序的集合, 實(shí)現(xiàn)List的集合可以使用下標(biāo)來(lái)取出 實(shí)現(xiàn)List的集合中元素可以是重復(fù)的。

Java集合功能與用法實(shí)例詳解

特有方法(除了Collection中有的方法): add(index,x):在集合的指定位置index插入指定元素x addAll(index,x):從指定的位置開(kāi)始,將集合x(chóng)中的所有元素插入到此列表中。 remove(index):移除集合中指定位置index上的元素。 get(index):返回列表中指定位置的元素。 【因?yàn)長(zhǎng)ist是有下標(biāo)的,所以支持使用get來(lái)獲取元素】 set(index, x)用指定元素x替換列表中指定位置index的元素 。 indexOf(X):返回集合中元素x的下標(biāo) 。 subList(fromIndex,toIndex):根據(jù)下標(biāo),從集合中取出元素,返回的是一個(gè)List 。 listIterator():返回此列表中的元素的列表迭代器。 常用實(shí)現(xiàn)類(lèi):

ArrayList:

是一種數(shù)組結(jié)構(gòu)的集合,便于查找,增刪麻煩 也有一些新增的方法,但貌似不太重要,有興趣的查文檔吧。

import java.util.ArrayList;import java.util.Iterator;public class ListDemo { public static void main(String[] args) { ArrayList q=new ArrayList(); //增 q.add('a'); q.add('b'); ArrayList a=new ArrayList(); a.addAll(q); a.add('c'); a.add('d'); System.out.println(a);//[a, b, c, d],實(shí)現(xiàn)了toString,所以可以直接打印出來(lái)。 //刪// a.remove('a'); a.remove(0); //查 System.out.println(a.size());//3 System.out.println(a.contains('b'));//true System.out.println(a.isEmpty());//false System.out.println(a);//[b, c, d] //改 a.set(0, 'bag'); System.out.println(a); //使用迭代器迭代 for(Iterator it=a.iterator();it.hasNext();) { System.out.println(it.next());//c d } }}

LinkedList:

是一種鏈表結(jié)構(gòu)的集合,便于增刪,查找不快。 它的元素插入法是頭插法,所以后面的元素會(huì)排在前面。 LinkedList還實(shí)現(xiàn)了Deque接口,可以用LinkedList來(lái)實(shí)現(xiàn)堆棧、隊(duì)列、雙端隊(duì)列。 因?yàn)槭褂昧祟^插法,所以有幾個(gè)方法需要注意一下: addFirst(x):將指定元素插入此列表的開(kāi)頭 addLast(x):將指定元素添加到此列表的結(jié)尾。 getFirst():返回此列表的第一個(gè)元素。 getLast():返回此列表的最后一個(gè)元素。 removeFirst():移除并返回此列表的第一個(gè)元素。 removeLast():移除并返回此列表的最后一個(gè)元素。 descendingIterator():返回逆序的迭代器 補(bǔ)充: 以前還能見(jiàn)到Vector和Stack,但Vector太過(guò)古老,被ArrayList取代,所以這里不講;而Stack已經(jīng)被ArrayDeque取代。 這里不講述線程同步中集合的處理。 對(duì)于想在迭代器迭代過(guò)程中針對(duì)集合進(jìn)行增刪改的,可以通過(guò)返回ListIterator來(lái)操作。 set 介紹: Set是一個(gè)接口,定義的是存儲(chǔ)的元素是無(wú)序的集合, 實(shí)現(xiàn)Set的集合中元素不可以重復(fù)。 獲取Set集合中的元素只能依靠迭代器。

Java集合功能與用法實(shí)例詳解

新增方法:無(wú)新增方法,基本都是Collection中聲明的方法。 常用實(shí)現(xiàn)類(lèi):

HashSet:

哈希表結(jié)構(gòu)的集合 利用哈希表結(jié)果構(gòu)成的集合查找速度會(huì)很快。

Java集合功能與用法實(shí)例詳解

TreeSet:

二叉樹(shù)結(jié)構(gòu)的集合 二叉樹(shù)插入元素是有順序的,TreeSet的元素是有序的。 由于二叉樹(shù)需要對(duì)結(jié)點(diǎn)排序(插入的結(jié)點(diǎn)位置),默認(rèn)情況下沒(méi)有排序方法,所以元素需要繼承Comparator并重寫(xiě)compareTo方法來(lái)實(shí)現(xiàn)元素之間比較大小的功能。 對(duì)于TreeSet,compareTo方法來(lái)保證元素的唯一性。【這時(shí)候可以不重寫(xiě)equals】

LinkHashSet:

是HashSet的子類(lèi),是鏈表跟哈希表的數(shù)據(jù)結(jié)構(gòu)的結(jié)合,上一個(gè)元素會(huì)存儲(chǔ)下一個(gè)元素的位置,所以可以按順序來(lái)取出。

Java集合功能與用法實(shí)例詳解

解決集合的元素的重復(fù): Set集合是不允許重復(fù)元素的,但是集合是不知道我們對(duì)象的重復(fù)的判斷依據(jù)的,默認(rèn)情況下判斷依據(jù)是判斷兩者是否為同一元素(euqals方法,依據(jù)是元素==元素?),如果要依據(jù)我們自己的判斷來(lái)判斷元素是否重復(fù),需要重寫(xiě)元素的equals方法(元素比較相等時(shí)調(diào)用)【在hastSet中還需要多一步:hashCode方法(元素生成hash碼的規(guī)則,生成的哈希碼如果相同則會(huì)影響存儲(chǔ)規(guī)則--》首先判斷哈希碼是否相同,再判斷元素是否相同,如果元素相同則不存儲(chǔ),如果不相同則依據(jù)哈希規(guī)則向后取一個(gè)位置存儲(chǔ)(數(shù)據(jù)結(jié)構(gòu)的知識(shí),這里不講述))】 hashCode()的返回值是元素的哈希碼,如果兩個(gè)元素的哈希碼相同,那么需要進(jìn)行equals判斷。【所以可以自定義返回值作為哈希碼】 equals()返回true代表兩元素相同,返回false代表不同。

import java.util.HashSet;import java.util.Set;class Student{ String name; int age; Student(String name,int age){ this.name=name; this.age=age; } public String toString() {//重寫(xiě)方法,以便sysout能輸出 return 'Student [name=' + name + ', age=' + age + ']'; } public int hashCode() {//這里使用的是自動(dòng)生成的代碼,也可以使用自己的規(guī)則 final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } public boolean equals(Object obj) {//這里使用的是自動(dòng)生成的代碼,也可以使用自己的規(guī)則 if (this == obj)//如果兩個(gè)地址相同,返回true return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Student other = (Student) obj; if (age != other.age) return false; if (name == null) { if (other.name != null)return false; } else if (!name.equals(other.name))//這里根據(jù)姓名和年齡來(lái)判斷元素是否相同 return false; return true; } }public class HashSetDemo { public static void main(String[] args) { Set s=new HashSet();// s.add('abc');// s.add('abc');// System.out.println(s);//這里因?yàn)榭梢允褂米詭У呐袛喾椒ǎ圆粫?huì)發(fā)生重復(fù) // s.add(new Student('lilei',18));// s.add(new Student('lilei',18));// System.out.println(s);//這里因?yàn)榕袛鄡蓚€(gè)地址是不同的,所以會(huì)重復(fù)。 // 在重寫(xiě)equals之后: s.add(new Student('lilei',18)); s.add(new Student('lilei',18)); System.out.println(s);//不發(fā)生重復(fù)。 }} 解決TreeSet的排序問(wèn)題: 二叉樹(shù)需要結(jié)點(diǎn)排序,所以元素之間比較能夠比較,所以對(duì)于自定義元素對(duì)象,需要繼承Comparator并重寫(xiě)的compareTo方法。 兩個(gè)元素相等時(shí),compareTo返回0;左大于右時(shí),返回正整數(shù)(一般返回1);小于時(shí)返回負(fù)整數(shù)(一般返回-1) 在TreeSet中,compareTo負(fù)責(zé)檢測(cè)元素重復(fù),所以要對(duì)compareTo的重寫(xiě)留心。

import java.util.TreeSet;class Student2 implements Comparable{ String name; int age; Student2(String name,int age){ this.name=name; this.age=age; } public int compareTo(Object o) { Student2 stu=(Student2)o;return this.name.equals(stu.name)?this.age-stu.age:this.name.compareTo(stu.name); //默認(rèn)按姓名排序,如果有重復(fù)的姓名,按年齡排序。認(rèn)為同名同年齡為同一元素 } @Override public String toString() { return 'Student2 [name=' + name + ', age=' + age + ']'; }}public class TreeSetDemo { public static void main(String[] args) { TreeSet t=new TreeSet();// t.add('a');// t.add('c');// t.add('d');// t.add('b');// System.out.println(t);//對(duì)于非自定義對(duì)象,可以排序[a, b, c, d] t.add(new Student2('lilei',18)); t.add(new Student2('lilei',17)); t.add(new Student2('hanmeimei',18)); t.add(new Student2('john',17)); t.add(new Student2('mike',27)); t.add(new Student2('alice',21)); System.out.println(t); }}還支持創(chuàng)建集合時(shí)傳入一個(gè)比較器Comparator來(lái)進(jìn)行排序,這時(shí)候重寫(xiě)的是compare方法:

import java.util.Comparator;import java.util.TreeSet;class CompareByLength implements Comparator{ public int compare(Object o1, Object o2) {Student3 stu1=(Student3)o1; Student3 stu2=(Student3)o2; return stu1.name.length()-stu2.name.length();// 注意,這里也與compareTo類(lèi)似,定義的規(guī)則必須要考慮到重復(fù)性,不然會(huì)導(dǎo)致屬性值相同的元素// 認(rèn)為是同一元素 } }class Student3 { String name; int age; Student3(String name,int age){ this.name=name; this.age=age; } public String toString() { return 'Student2 [name=' + name + ', age=' + age + ']'; }}public class TreeSetDemo2 { public static void main(String[] args) {TreeSet t=new TreeSet(new CompareByLength()); t.add(new Student3('aaa',18)); t.add(new Student3('a',18));// t.add(new Student3('d',18));//這里是元素重復(fù)性的檢測(cè),原因在compare t.add(new Student3('aa',17)); t.add(new Student3('cccccccccc',17)); System.out.println(t); }} Map: 介紹: Map主要用于存儲(chǔ)帶有映射關(guān)系的數(shù)據(jù)(比如學(xué)號(hào)與學(xué)生信息的映射關(guān)系) Map的存儲(chǔ)形式是鍵值對(duì),一個(gè)鍵對(duì)應(yīng)一個(gè)值。 鍵是不可重復(fù)的,值是可以重復(fù)的。 常見(jiàn)方法: 獲取: keySet():獲取所有鍵,返回一個(gè)Set集合 get(x):返回指定鍵x所映射的值;如果此映射不包含該鍵的映射關(guān)系,則返回 null。 size():返回鍵值對(duì)的數(shù)量。 values():獲取所有值,返回一個(gè)Set集合 。 entrySet():返回一個(gè)集合,集合中的對(duì)象都是包含鍵值對(duì)關(guān)系的entry類(lèi)對(duì)象。 設(shè)置: put(key,value):將指定的值與此映射中的指定鍵關(guān)聯(lián)【已有則覆蓋舊值】 putAll(X):從指定映射X中將所有映射關(guān)系復(fù)制到此映射中。 刪除: clear():刪除所有鍵值對(duì) 。 remove(key):如果存在一個(gè)鍵key的映射關(guān)系,則將其從此映射中移除 其他: containsKey(x):檢測(cè)是否存儲(chǔ)指定鍵x containsValue(x):檢測(cè)是否存儲(chǔ)指定值x isEmpty():檢測(cè)是否為空,空則返回 true 重要實(shí)現(xiàn)類(lèi):

HashMap:

哈希表結(jié)構(gòu)的。 HashMap的方法基本都是Map中聲明的方法

TreeMap:

二叉樹(shù)結(jié)構(gòu)的。 有序的,可以根據(jù)鍵值來(lái)排序,需要實(shí)現(xiàn)可以進(jìn)行比較的方法(compareTo或compare)

Properties:

一種經(jīng)常用來(lái)存儲(chǔ)配置的集合,很適合存儲(chǔ)一些比如'backgroundColor=red'的數(shù)據(jù)。 常用方法: getProperty(String key):用指定的鍵在此屬性列表中搜索屬性。 load(InputStream inStream):從輸入流中讀取屬性列表(鍵和元素對(duì))。 list(PrintStream out):將屬性列表輸出到指定的輸出流。 嵌套類(lèi): Map.Entry<K,V> 與Map.entrySet 方法配合,Map.entrySet返回的結(jié)果是一個(gè)集合,集合中的每一個(gè)元素都是這個(gè)類(lèi)的對(duì)象。 存在意義是返回結(jié)果包含了鍵和值,使得能夠同時(shí)操作鍵和值。 此類(lèi)對(duì)象的常用方法: getKey():返回與此項(xiàng)對(duì)應(yīng)的鍵。 getValue():返回與此項(xiàng)對(duì)應(yīng)的值。 setValue(value):用指定的值替換與此項(xiàng)對(duì)應(yīng)的值

public class MapDemo { public static void main(String[] args) { Map m=new HashMap(); m.put('hanmeimei', 'lilei'); m.put('wodeta', 'wo'); m.put('apple', 'google'); Set s=m.entrySet(); for(Iterator it=s.iterator();it.hasNext();) { Map.Entry me=(Entry) it.next(); System.out.println(me.getKey()+'....'+me.getValue()); } }} Collections工具類(lèi): 介紹: Collections是jdk提供的一個(gè)專(zhuān)門(mén)用來(lái)操作集合的類(lèi) 此類(lèi)完全由在 collection 上進(jìn)行操作或返回 collection 的靜態(tài)方法組成。 常用方法: 排序: sort(L):根據(jù)元素的自然順序 對(duì)指定列表按升序進(jìn)行排序。 sort(L,C):根據(jù)指定比較器C產(chǎn)生的順序?qū)χ付斜磉M(jìn)行排序。查找: max(L):根據(jù)元素的自然順序,返回給定 collection 的最大元素 max(L,C):根據(jù)指定比較器C產(chǎn)生的順序,返回給定 collection 的最大元素 min(L):根據(jù)元素的自然順序,返回給定 collection 的最小元素 min(L,C):根據(jù)指定比較器C產(chǎn)生的順序,返回給定 collection 的最小元素修改: fill(L,x):使用指定元素替換指定列表中的所有元素。 swap(L,indexX,indexY):將指定集合中indexX與indexY的元素交換 reverse(L):反轉(zhuǎn)指定列表中元素的順序。 reverseOrder():返回一個(gè)比較器,它強(qiáng)行逆轉(zhuǎn)實(shí)現(xiàn)了 Comparable 接口的對(duì)象 collection 的自然順序。

import java.util.ArrayList;import java.util.Collections;public class ListDemo2 { public static void main(String[] args) { ArrayList q=new ArrayList(); q.add('a'); q.add('z'); q.add('b'); q.add('c'); System.out.println(Collections.max(q)); System.out.println(q); Collections.sort(q); System.out.println(q); }}

想了解更多,可以自行查看jdk文檔。

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
韩国三级一区| 欧美日一区二区三区在线观看国产免| 欧美综合精品| 亚洲2区在线| 久久国内精品| 国产一区二区三区四区大秀| 国产精品久久久久久久久久10秀 | 欧美一区影院| 国产亚洲高清一区| 麻豆91在线播放| 中文在线а√在线8| 91久久国产| 日韩精品免费一区二区夜夜嗨| 国产日韩亚洲| www在线观看黄色| 亚洲一区国产| 国产精品伦一区二区| 中文一区一区三区高中清不卡免费| 亚洲香蕉网站| 日韩二区三区四区| 丁香六月综合| 天堂va蜜桃一区二区三区| 日韩av影院| www在线观看黄色| 亚洲天堂av资源在线观看| 国产精品一区二区精品| 欧美精选视频一区二区| 亚洲网址在线观看| 精品中文在线| 亚洲激情二区| 久久亚洲资源中文字| 亚洲欧美一区在线| 国产精品一页| 久久电影一区| 新版的欧美在线视频| 中文字幕一区二区三区日韩精品| 国产精品亲子伦av一区二区三区| 亚洲91久久| 欧美激情网址| 性色av一区二区怡红| 日韩综合在线| 国产亚洲一卡2卡3卡4卡新区| 欧美+亚洲+精品+三区| 欧美国产精品| 亚洲91在线| 免费视频国产一区| 欧美黄色一区| 首页欧美精品中文字幕| 中文字幕在线免费观看视频| 偷拍亚洲精品| 欧美日韩国产高清电影| 国产日产一区| 99精品99| 国产精品伊人| 日韩精品一级二级| 伊人久久在线| 欧美视频精品全部免费观看| 国产色综合网| 日韩欧美一区二区三区在线观看| 91九色综合| 视频一区二区不卡| 91精品一区国产高清在线gif| 国产欧美精品| 日韩精品中文字幕吗一区二区 | 91成人在线网站| 午夜免费一区| 亚洲成人不卡| 粉嫩av一区二区三区四区五区| 欧美中文高清| 日韩精品社区| 日韩精品免费观看视频| 国产精品女主播一区二区三区| 成人小电影网站| 国产精品毛片久久| 精品国产欧美日韩| 国产精成人品2018| 国产一级成人av| 婷婷成人av| 免费成人在线影院| 国产精品免费看| 国产亚洲永久域名| 日韩视频一区二区三区在线播放免费观看| 成人免费一区| 国产一区二区三区天码| 免费一区二区三区在线视频| 日本午夜精品久久久久| 日韩在线麻豆| 日韩av影院| 欧美日韩调教| 国产探花在线精品| 国产免费播放一区二区| 91精品麻豆| 国产欧美二区| 国产精品igao视频网网址不卡日韩| 欧美日韩国产一区二区在线观看| 欧美日韩va| 麻豆国产欧美日韩综合精品二区| 国产精品日本一区二区三区在线| 国产精品亚洲成在人线| 国产精品国产三级在线观看| 国产精品亚洲人成在99www| 国产精品亚洲综合久久| 久久婷婷国产| 国产传媒av在线| 久久久久国产精品一区三寸| 久久久久午夜电影| 亚洲一区黄色| 欧美日韩国产精品一区二区亚洲| 女人天堂亚洲aⅴ在线观看| 亚洲一级在线| 日韩区一区二| 欧美精品成人| 欧美freesex黑人又粗又大| 激情综合网站| 免费精品视频最新在线| 青草综合视频| 国产一区二区三区探花| 红桃视频国产精品| 日韩av中文在线观看| 福利精品一区| 在线综合亚洲| 国产乱人伦精品一区| 波多视频一区| 1000部精品久久久久久久久| 亚洲三级网站| www在线观看黄色| 亚洲无线观看| a国产在线视频| 首页国产欧美久久| 免费日韩成人| 欧美特黄一级| 国产日韩欧美三级| 日本精品影院| 亚洲18在线| 中文在线资源| 午夜亚洲福利| 88xx成人免费观看视频库| 国产麻豆综合| 国产麻豆一区| 欧美网站在线| 国产一区二区色噜噜| 只有精品亚洲| 亚洲精品国产嫩草在线观看| 亚洲久久视频| 日韩在线短视频| 日韩高清不卡在线| 免费不卡中文字幕在线| 国产精品久久久久77777丨| 午夜国产精品视频免费体验区| 国产欧美欧美| 麻豆久久精品| 欧美www视频在线观看| 最近国产精品视频| 久久久久久婷| 97se亚洲| 久久亚洲影院| 99精品视频在线| 美腿丝袜亚洲一区| 亚洲精品韩国| 91精品国产91久久久久久黑人| 欧美在线日韩| 三级亚洲高清视频| 美女一区网站| 国产精品22p| 最近国产精品视频| 欧美日韩国产一区二区三区不卡 | 久久久久蜜桃| 国产精品伦一区二区| 久久福利精品| 99久久精品国产亚洲精品| 国产黄色一区| 日韩精品欧美大片| 久久高清国产| 国产高清一区| 久久精品青草| zzzwww在线看片免费| 国产精品久久久久久久久久妞妞 | 亚洲欧美高清| 久久一级电影| 激情国产在线| 国产传媒在线| 98精品视频| 国产中文字幕一区二区三区| 欧美日韩xxxx| 91麻豆精品激情在线观看最新 | 亚洲丝袜美腿一区| 亚洲天堂免费电影| 99精品综合| 国产精品欧美在线观看| 亚洲精品少妇| 蜜芽一区二区三区| 国产精品社区| 亚洲在线电影| 视频在线观看一区二区三区| 午夜在线播放视频欧美| 亚洲免费中文| 在线免费观看亚洲| 自拍自偷一区二区三区| 在线国产日韩| 四虎成人精品一区二区免费网站|