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

Java集合框架總結:TreeSet類的排序問題

開發 后端
本文介紹TreeSet支持兩種排序方法:自然排序和。TreeSet默認采用自然排序。詳細請看下文

TreeSet支持兩種排序方法:自然排序和定制排序。TreeSet默認采用自然排序。

1、自然排序

TreeSet會調用集合元素的compareTo(Object obj)方法來比較元素之間大小關系,然后將集合元素按升序排列,這種方式就是自然排序。(比較的前提:兩個對象的類型相同)。

 

java提供了一個Comparable接口,該接口里定義了一個compareTo(Object obj)方法,該方法返回一個整數值,實現該接口的類必須實現該方法,實現了該接口的類的對象就可以比較大小。當一個對象調用該方法與另一個對象進行比較,例如obj1.comparTo(obj2),如果該方法返回0,則表明這兩個對象相等;如果返回一個正整數,則表明obj1大于obj2;如果該方法返回一個負整數,則表明obj1小于obj2.

 

java常用類實現Comparable接口,并提供了比較大小的標準。實現Comparable接口的常用類:

  • BigDecimal、BigIneger以及所有數值型對應包裝類:按它們對應的數值的大小進行比較。
  • Character:按字符的UNICODE值進行比較。
  • Boolean:true對應的包裝類實例大于false對應的包裝類實例。
  • String:按字符串中字符的UNICODE值進行比較。
  • Date、Time:后面的時間、日期比前面的時間、日期大。

如果試圖把一個對象添加進TreeSet時,則該對象的類必須實現Comparable接口。

如下程序則會報錯:

  1. class Err  
  2. {  
  3. }  
  4. public class TestTreeSetError  
  5. {  
  6. public static void main(String[] args)  
  7. {  
  8. TreeSet ts = new TreeSet();  
  9. //向TreeSet集合中添加兩個Err對象  
  10. ts.add(new Err());  
  11. ts.add(new Err());  
  12. }  
  13. }  
  14.  

 

說明:

上面程序試圖向TreeSet集合中添加2個Err對象,添加第一個對象時,TreeSet里沒有任何元素,所以沒有問題;當添加第二個Err對象時,TreeSet就會調用該對象的compareTo(Object obj)方法與集合中其他元素進行比較——如果對應的類沒有實現Comparable接口,則會引發ClassCastException異常。而且當試圖從TreeSet中取出元素第一個元素時,依然會引發ClassCastException異常。

 

當采用compareTo(Object obj)方法比較對象時,都需要將被比較對象obj強制類型轉換成相同類型,因為只有相同類的兩個實例才能比較大小。即向TreeSet中添加的應該是同一個類的對象,否則會引發ClassCastException異常。例如,當向TreeSet中添加一個字符串對象,這個操作完全正常。當添加第二個Date對象時,TreeSet就好調用該對象的compareTo(Object obj)方法與集合中其他元素進行比較,則此時程序會引發異常。

在實際編程中,程序員可以定義自己的類向TreeSet中添加多種類型的對象,前提是用戶自定義類實現了Comparable接口,實現該接口時在實現compareTo(Object obj)方法時沒有進行強制類型轉換。但當操作TreeSet里的集合數據時,不同類型的元素依然會發生ClassCastExceptio異常。(認真閱讀下就會明白)

 

當把一個對象加入TreeSet集合中時,TreeSet調用該對象的compareTo(Object obj)方法與容器中的其他對象比較大小,然后根據紅黑樹算法決定它的存儲位置。如果兩個對象通過compareTo(Object obj)比較相等,TreeSet即認為它們存儲同一位置。

 

對于TreeSet集合而言,它判斷兩個對象不相等的標準是:兩個對象通過equals方法比較返回false,或通過compareTo(Object obj)比較沒有返回0——即使兩個對象時同一個對象,TreeSet也會把它們當成兩個對象進行處理。

如下程序所示:

  1. //Z類,重寫了equals方法,總是返回false,  
  2. //重寫了compareTo(Object obj)方法,總是返回正整數  
  3. class Z implements Comparable  
  4. {  
  5. int age;  
  6. public Z(int age)  
  7. {  
  8. this.age = age;  
  9. }  
  10. public boolean equals(Object obj)  
  11. {  
  12. return false;  
  13. }  
  14. public int compareTo(Object obj)  
  15. {  
  16. return 1;  
  17. }  
  18. }  
  19. public class TestTreeSet  
  20. {  
  21. public static void main(String[] args)  
  22. {  
  23. TreeSet set = new TreeSet();  
  24. Z z1 = new Z(6);  
  25. set.add(z1);  
  26. System.out.println(set.add(z1));  
  27. //下面輸出set集合,將看到有2個元素  
  28. System.out.println(set);  
  29. //修改set集合的第一個元素的age屬性  
  30. ((Z)(set.first())).age = 9;  
  31. //輸出set集合的最后一個元素的age屬性,將看到也變成了9  
  32. System.out.println(((Z)(set.last())).age);  
  33. }  
  34. }  

程序運行結果:

true 
[TreeSet.Z@1fb8ee3, TreeSet.Z@1fb8ee3] 
9

說明:

程序中把同一個對象添加了兩次,因為z1對象的equals()方法總是返回false,而且compareTo(Object obj)方法總是返回1。這樣TreeSet會認為z1對象和它自己也不相同,因此TreeSet中添加兩個z1對象。而TreeSet對象保存的兩個元素實際上是同一個元素。所以當修改TreeSet集合里第一個元素的age屬性后,該TreeSet集合里最后一個元素的age屬性也隨之改變了。

 

總結:當需要把一個對象放入TreeSet中時,重寫該對象對應類的equals()方法時,應保證該方法與compareTo(Object obj)方法有一致結果,其規則是:如果兩個對象通過equals方法比較返回true時,這兩個對象通過compareTo(Object obj)方法比較應返回0。

 

如果兩個對象通過equals方法比較返回true,但這兩個對象通過compareTo(Object obj)方法比較不返回0時,這將導致TreeSet將會把這兩個對象保存在不同位置,從而兩個對象都可以添加成功,這與Set集合的規則有點出入。

 

如果兩個對象通過compareTo(Object obj)方法比較返回0時,但它們通過equals方法比較返回false時將更麻煩:因為兩個對象通過compareTo(Object obj)方法比較相等,TreeSet將試圖把它們保存在同一個位置,但實際上又不行(否則將只剩下一個對象),所以處理起來比較麻煩。

 

如果向TreeSet中添加一個可變對象后,并且后面程序修改了該可變對象的屬性,導致它與其他對象的大小順序發生改變,但TreeSet不會再次調整它們的順序,甚至可能導致TreeSet中保存這兩個對象,它們通過equals方法比較返回true,compareTo(Object obj)方法比較返回0.

如下程序所示:

  1. class R  
  2. {  
  3. int count;  
  4. public R(int count)  
  5. {  
  6. this.count = count;  
  7. }  
  8. public String toString()  
  9. {  
  10. return "R(count屬性:" + count + ")";  
  11. }  
  12. public boolean equals(Object obj)  
  13. {  
  14. if (obj instanceof R)  
  15. {  
  16. R r = (R)obj;  
  17. if (r.count == this.count)  
  18. {  
  19. return true;  
  20. }  
  21. }  
  22. return false;  
  23. }  
  24. public int hashCode()  
  25. {  
  26. return this.count;  
  27. }  
  28. }  
  29. public class TestHashSet2  
  30. {  
  31. public static void main(String[] args)  
  32. {  
  33. HashSet hs = new HashSet();  
  34. hs.add(new R(5));  
  35. hs.add(new R(-3));  
  36. hs.add(new R(9));  
  37. hs.add(new R(-2));  
  38. //打印TreeSet集合,集合元素是有序排列的  
  39. System.out.println(hs);  
  40. //取出第一個元素  
  41. Iterator it = hs.iterator();  
  42. R first = (R)it.next();  
  43. //為第一個元素的count屬性賦值  
  44. first.count = -3;  
  45. //再次輸出count將看到TreeSet里的元素處于無序狀態  
  46. System.out.println(hs);  
  47. hs.remove(new R(-3));  
  48. System.out.println(hs);  
  49. //輸出false  
  50. System.out.println("hs是否包含count為-3的R對象?" + hs.contains(new R(-3)));  
  51. //輸出false  
  52. System.out.println("hs是否包含count為5的R對象?" + hs.contains(new R(5)));  
  53.  
  54. }  
  55. }  
  56.  

 

程序運行結果:

[R(count屬性:-3), R(count屬性:-2), R(count屬性:5), R(count屬性:9)]
[R(count屬性:20), R(count屬性:-2), R(count屬性:5), R(count屬性:-2)]
[R(count屬性:20), R(count屬性:-2), R(count屬性:5), R(count屬性:-2)]
[R(count屬性:20), R(count屬性:-2), R(count屬性:-2)]

 

 

說明:

上面程序中的R對象是一個正常重寫了equals方法和comparable方法類,這兩個方法都以R對象的count屬性作為判斷的依據。可以看到程序第一次輸出的結果是有序排列的。當改變R對象的count屬性,程序的輸出結果也發生了改變,而且包含了重復元素。一旦改變了TreeSet集合里可變元素的屬性,當再視圖刪除該對象時,TreeSet也會刪除失敗(甚至集合中原有的、屬性沒被修改,但與修改后元素相等的元素也無法刪除),所以刪除count

為-2的R對象時,沒有任何元素被刪除;程序可以刪除count為5的R對象,這表明TreeSet可以刪除沒有被修改屬性、且不與其他被修改屬性的對象重復的對象。

 

總結:與HashSet在處理這些對象時將非常復雜,而且容易出錯。為了讓程序更具健壯,推薦HashSet和TreeSet集合中只放入不可變對象。

#p#

2、定制排序

TreeSet的自然排序是根據集合元素的大小,TreeSet將他們以升序排列。如果需要實現定制排序,例如降序,則可以使用Comparator接口。該接口里包含一個int compare(T o1, T o2)方法,該方法用于比較o1和o2的大小。

如果需要實現定制排序,則需要在創建TreeSet集合對象時,并提供一個Comparator對象與該TreeSet集合關聯,由該Comparator對象負責集合元素的排序邏輯。

如下程序所示:

  1. class M {  
  2. int age;  
  3.  
  4. public M(int age) {  
  5. this.age = age;  
  6. }  
  7.  
  8. public String toString() {  
  9. return "M對象(age:" + age + ")";  
  10. }  
  11. }  
  12.  
  13. public class TestTreeSet3 {  
  14. public static void main(String[] args) {  
  15. TreeSet ts = new TreeSet(new Comparator() {  
  16. public int compare(Object o1, Object o2) {  
  17.  
  18. M m1 = (M) o1;  
  19. M m2 = (M) o2;  
  20.  
  21. if (m1.age > m2.age) {  
  22. return -1;  
  23. else if (m1.age == m2.age) {  
  24. return 0;  
  25. else {  
  26. return 1;  
  27. }  
  28. }  
  29. });  
  30. ts.add(new M(5));  
  31. ts.add(new M(-3));  
  32. ts.add(new M(9));  
  33. System.out.println(ts);  
  34. }  
  35. }  
  36.  

程序運行結果:

[M對象(age:9), M對象(age:5), M對象(age:-3)]

說明:

上面程序中創建了一個Comparator接口的匿名內部類對象,該對象負責ts集合的排序。所以當我們把M對象添加到ts集合中時,無須M類實現Comparable接口,因為此時TreeSet無須通過M對象來比較大小,而是由與TreeSet關聯的Comparator對象來負責集合元素的排序。使用定制排序時,TreeSet對集合元素排序時不管集合元素本身的大小,而是由Comparator對象負責集合元素的排序規則。

原文鏈接:http://www.cnblogs.com/zhxxcq/archive/2012/04/09/2439056.html

【編輯推薦】

  1. 詳解Java類的生命周期
  2. Java理論與實踐: Web層的狀態復制
  3. Java代碼編寫的30條建議
  4. Java Excel API及詳細教程
  5. Java集合框架和數組的排序
責任編輯:林師授 來源: 星星傳奇的博客
相關推薦

2012-03-12 15:36:29

Java框架

2012-04-26 10:52:52

Java數組集合

2019-07-22 09:59:20

Java框架集合

2009-06-30 14:01:00

Java集合框架Java數組排序

2012-03-15 11:21:19

Java

2023-12-01 11:13:50

JavaTreeSet

2015-09-11 09:40:35

Java集合框架

2021-08-19 10:30:13

Java集合排序程序開發

2011-04-20 15:06:44

堆排序

2011-04-20 15:20:03

快速排序

2011-04-20 14:07:37

冒泡排序

2011-04-20 13:56:08

選擇排序

2011-04-20 14:19:00

希爾排序

2011-07-11 11:02:12

JAVA集合框架

2009-06-29 16:50:27

Java集合框架

2023-10-09 07:57:14

JavaJCF

2021-03-11 07:27:22

Java 集合數據

2011-04-20 16:05:15

基數排序

2011-04-20 12:49:44

插入排序

2011-04-20 14:29:07

歸并排序
點贊
收藏

51CTO技術棧公眾號

日本一区二区成人| 老司机精品视频网站| 精品三级av在线| 国模无码视频一区二区三区| 欧美女同网站| 九九在线精品视频| 韩日欧美一区二区| 国产视频不卡在线| 成人精品毛片| 欧美三级日韩在线| 欧美人成在线观看| 一级日本在线| 94色蜜桃网一区二区三区| 国产精自产拍久久久久久蜜| 久久精品国产亚洲av无码娇色| 精品九九在线| 精品88久久久久88久久久| 午夜免费精品视频| av岛国在线| 亚洲日本在线看| 欧美日韩一区二区三区免费| 成人h动漫精品一区二区无码 | 国产亚洲天堂网| caopon在线免费视频| 久久女同性恋中文字幕| 超碰97在线人人| 在线播放成人av| 丝袜美腿亚洲综合| 性色av一区二区三区红粉影视| 亚洲精品电影院| 国产成人黄色| 日韩精品高清在线| 成年女人免费视频| 精品视频在线播放一区二区三区 | 在线一级成人| 精品成人免费观看| 色哟哟网站在线观看| 99精品视频在线免费播放| 在线观看精品一区| 国产日产欧美视频| 无遮挡爽大片在线观看视频 | 2023国产精华国产精品| 欧美三级日韩三级国产三级| 老司机午夜av| 日韩欧美看国产| 色婷婷久久99综合精品jk白丝| 国产69精品久久久久999小说| 伊人春色在线观看| 亚洲精品美腿丝袜| 青青草原网站在线观看| 久久综合网导航| 日韩一区中文字幕| 艳色歌舞团一区二区三区| 超碰97在线免费观看| 国产日韩欧美精品电影三级在线| 免费在线观看91| 蜜桃视频在线观看网站| 久久理论电影网| 欧美一二三区| yourporn在线观看中文站| 国产视频一区在线播放| 天堂一区二区三区| 在线视频91p| 成人欧美一区二区三区视频网页 | 美女精品在线| 日韩av免费在线| 中文字幕一区二区免费| 久久99国产精品尤物| 91久久国产精品91久久性色| 国产福利免费视频| 成人免费毛片aaaaa**| 国产伦精品一区二区三区高清版| 天天射天天操天天干| 26uuu另类欧美| 亚洲国产精品一区在线观看不卡| 免费在线观看黄| 亚洲一区二区美女| 成人在线免费观看av| gogo亚洲高清大胆美女人体| 欧美日韩国产不卡| 亚洲香蕉中文网| 蜜桃a∨噜噜一区二区三区| 在线日韩欧美视频| 黄色一级视频免费| 模特精品在线| 国产综合视频在线观看| 成人午夜福利视频| 久久嫩草精品久久久久| 在线播放 亚洲| aa视频在线观看| 欧美日韩国产系列| 97精品人人妻人人| 国产亚洲欧美日韩在线观看一区二区 | 日韩美女在线视频| 久久精品一区二区免费播放 | 丝袜人妻一区二区三区| 日韩三区免费| 精品欧美一区二区久久| 亚洲精品国产精品国自产网站| 91成人网在线观看| 日韩av色在线| 秋霞av鲁丝片一区二区| 国产精品私人影院| 日本少妇高潮喷水视频| 日韩一级视频| 精品无人国产偷自产在线| 2025国产精品自拍| 欧美一级专区| 福利视频一区二区三区| 婷婷视频在线| 日韩欧美在线国产| 中文字幕99页| 一本一道久久a久久精品蜜桃| 欧美做受高潮1| 精品人妻一区二区三区麻豆91 | 中文字幕成人一区| 在线天堂新版最新版在线8| 日韩一级黄色片| 免费一级黄色录像| 免费亚洲网站| 国产精品自拍首页| а√中文在线8| 欧美体内she精视频| 免费看黄色aaaaaa 片| 亚洲五月婷婷| 91传媒视频在线观看| 伊人在线视频| 欧美性猛交xxxx乱大交退制版| 中文乱码人妻一区二区三区视频| 午夜精品免费| 成人在线激情视频| 色哟哟免费在线观看| 在线免费不卡电影| 欧美图片一区二区| 国产精品毛片一区二区三区| 国产精品久久久久久久久久久久午夜片| 日本欧美在线视频免费观看| 欧美日韩一区三区四区| 国产小视频自拍| 日日夜夜精品视频天天综合网| 久久久久九九九| 午夜不卡影院| 精品一区精品二区| 国产成人在线视频观看| 成人午夜av电影| 大伊香蕉精品视频在线| 国产色噜噜噜91在线精品| 欧美福利视频在线观看| 亚洲AV无码一区二区三区少妇| 亚洲欧美偷拍卡通变态| 日韩精品aaa| 影音先锋成人在线电影| 成人午夜影院在线观看| 国产精品探花在线| 亚洲精品一区二区三区福利| 国产午夜精品无码| 91色|porny| 国产一级片黄色| 欧美综合一区| 91亚洲精品久久久久久久久久久久| 久久久久久国产精品免费无遮挡| 制服丝袜日韩国产| 精品无码久久久久久久久| jlzzjlzz亚洲日本少妇| 中国丰满人妻videoshd| 精品欧美久久| 亚洲free嫩bbb| 国产第一页在线| 日韩av一区二区在线观看| 国产成人无码一区二区在线播放| 国产人妖乱国产精品人妖| 另类小说色综合| 亚洲成人一区| 精品欧美一区二区久久久伦| 91精品影视| 另类美女黄大片| 十八禁一区二区三区| 一本一道久久a久久精品综合蜜臀| 午夜影院黄色片| 国产激情视频一区二区三区欧美 | 免费人成黄页网站在线一区二区| 亚洲一区二区三区精品视频| 亚洲图色一区二区三区| 日本精品视频网站| 免费黄网站在线播放| 亚洲福利视频二区| 欧美人一级淫片a免费播放| 亚洲柠檬福利资源导航| 中文字幕日韩三级片| 毛片一区二区三区| 和岳每晚弄的高潮嗷嗷叫视频| 国产成人调教视频在线观看| 91在线看www| 亚洲欧美一区二区三区| 久久精品久久精品亚洲人| 天天摸天天碰天天爽天天弄| 欧美精品电影在线播放| 日产精品久久久| 亚洲精品久久7777| 性高潮久久久久久久| 国产精品69毛片高清亚洲| 日韩av资源在线| 欧美激情91| 日韩资源av在线| 风间由美一区二区av101| 国产精品久久久久999| free性护士videos欧美| 久久精品亚洲一区| 国产在线观看免费| 日韩av网站在线| jlzzjlzz亚洲女人18| 欧洲色大大久久| 1级黄色大片儿| 悠悠色在线精品| 黄色一级片一级片| 久久精品一区二区三区四区| 色哟哟视频在线| 国产九九视频一区二区三区| 日本黄大片一区二区三区| 亚洲一区二区三区四区五区午夜| 成年丰满熟妇午夜免费视频 | 久久嫩草精品久久久精品一| 国产免费a级片| 国产精品一区二区久久精品爱涩| 日韩肉感妇bbwbbwbbw| 久久精品女人| 亚洲午夜无码av毛片久久| 国产综合自拍| 国产一级大片免费看| 图片小说视频色综合| 日韩精品一区二区三区外面| 亚洲精品**不卡在线播he| 国产日韩精品久久| 国产精品对白| av免费精品一区二区三区| 精品中文字幕一区二区三区四区| 国产一区二区在线播放| 国产一区二区三区四区五区3d | 免费看毛片的网址| 欧美日韩亚洲一区| 欧美做暖暖视频| 欧美激情亚洲| 9色porny| 影音先锋在线一区| 久艹在线免费观看| 国模一区二区三区| 女人被男人躁得好爽免费视频 | 欧美熟妇乱码在线一区| 欧美精品一区二区三区很污很色的| 性生交大片免费看女人按摩| 日韩精品一区二区三区视频在线观看| 91麻豆成人精品国产| 91麻豆精品国产自产在线观看一区 | 久久久一二三区| 亚洲午夜一区二区三区| 国产91av视频| 日韩欧美在线视频| 国产99久久久久久免费看| 欧美日韩日日摸| 国产精品一区二区人人爽| 制服.丝袜.亚洲.中文.综合| va视频在线观看| 亚洲精品久久久久| 可以在线观看的av| 日韩在线观看免费全| 高潮毛片在线观看| 欧美激情在线一区| 欧美巨大丰满猛性社交| 国产福利视频一区二区| 青娱乐极品盛宴一区二区| 97人人模人人爽人人少妇| 激情视频极品美女日韩| 欧美一区二区视频17c| 日韩精品二区| 日本一级黄视频| 亚洲欧美久久| 潘金莲激情呻吟欲求不满视频| 国产精品1区2区3区在线观看| 制服丝袜第一页在线观看| 欧美国产精品中文字幕| 懂色av懂色av粉嫩av| 一区二区三区在线免费播放 | 国产丝袜精品丝袜| 欧美在线xxx| 91成人短视频在线观看| 国产综合18久久久久久| 日韩av片子| 欧美视频在线观看视频| 日韩高清不卡一区二区三区| 两女双腿交缠激烈磨豆腐| 91天堂素人约啪| 国产美女福利视频| 欧美日韩国产综合视频在线观看中文 | 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美韩国日本在线| 国产综合色在线视频区| 精品人妻一区二区免费视频| 国产精品全国免费观看高清| 国产亚洲精品久久久久久打不开| 在线一区二区视频| www.蜜臀av| 中文字幕日韩电影| 日本在线影院| av一区二区三区免费| 久久精品国产68国产精品亚洲| 欧美一级欧美一级| 国产一区二区美女| 男人舔女人下部高潮全视频| 午夜影视日本亚洲欧洲精品| 91精品中文字幕| 亚洲色图35p| av毛片午夜不卡高**水| 91免费在线观看网站| 日韩电影在线视频| 国产精品动漫网站| 不卡区在线中文字幕| a级黄色片免费看| 欧美日韩国产乱码电影| 免费在线视频你懂得| 午夜伦理精品一区| 人人爱人人干婷婷丁香亚洲| 亚洲一区三区在线观看| 久久婷婷丁香| 三级视频网站在线观看| 一区二区理论电影在线观看| 一区二区的视频| 深夜福利日韩在线看| 成人看片网页| 欧美午夜视频在线| 亚洲欧美日本国产专区一区| 88av在线播放| 亚洲午夜av在线| 性一交一乱一精一晶| 欧美成人三级视频网站| 激情久久免费视频| 中文字幕99| 国产乱码精品一区二区三区五月婷 | 中文av一区二区三区| 国产欧美一区二区三区鸳鸯浴| 人人爽人人爽人人片av| 亚洲另类图片色| 中文字幕在线视频久| 美乳视频一区二区| 欧美亚洲一区| 五月天综合视频| 欧美亚洲综合色| 91精品国产综合久久久久久豆腐| 国产999在线观看| 精品美女久久| 中文字幕天天干| 中文字幕日本乱码精品影院| 91资源在线视频| 欧美成人第一页| 9l视频自拍蝌蚪9l视频成人| 黄页网站大全在线观看| 99精品国产99久久久久久白柏| 一区二区三区福利视频| 亚洲美女视频网| 99蜜月精品久久91| 一区二区三区av| 国产99久久久国产精品免费看| 久久香蕉精品视频| 日韩电视剧免费观看网站| 成人性生活视频| 先锋影音网一区| 国产精品一区二区不卡| 久久综合综合久久| 国产丝袜一区视频在线观看| 成人做爰视频www| 免费观看国产视频在线| 成人av在线资源| 无码人妻熟妇av又粗又大| 深夜福利日韩在线看| 超碰在线一区| 国产真人无码作爱视频免费| 中文字幕中文字幕一区| 丰满少妇在线观看bd| 日本亚洲欧美三级| 999成人网| 中文成人无字幕乱码精品区| 欧美午夜寂寞影院| 男女在线观看视频| 日本精品一区二区三区视频| 国产在线日韩欧美| 日本三级小视频| 久久激情视频久久| 嫩草国产精品入口| 永久免费的av网站| 亚洲高清免费视频| 91caoporn在线| 国产日韩欧美综合精品| 麻豆一区二区99久久久久| 日本系列第一页| 三级精品视频久久久久| 牛牛影视久久网| 欧美性受xxxxxx黑人xyx性爽| 婷婷成人综合网| 97caopor国产在线视频| 欧美日韩国产不卡在线看| 国产二区国产一区在线观看|