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

這九個工具庫讓我的 Java 開發效率提升了80%

開發
在這篇文章中,我介紹了 Java 開發中九個非常實用的工具類,它們可以幫助我們提高開發效率,減少重復代碼,并簡化日常的開發任務。

在 Java 語言的龐大體系中,有很多不錯的工具類,能夠大大提升我們的開發效率。但如果你不了解它們,就很可能會重復編寫一些類似的代碼。這不僅浪費時間,而且你寫的可能還不如現有的好。今天,我決定和大家分享一些我經常使用的工具類,希望對你們有所幫助。

一、Collections

首先是 java.util 包下的 Collections 類。這個類主要用于操作集合,我個人非常喜歡使用它。以下是一些常用功能:

1. 排序

在工作中,經常需要對集合進行排序。讓我們看看如何使用 Collections 工具實現升序和降序排列:

List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(3);
Collections.sort(list); //升序
System.out.println(list);
Collections.reverse(list); //降序
System.out.println(list);

輸出:

[1, 2, 3]
[3, 2, 1]

2. 獲取最大值或最小值

有時需要在集合中找到最大值或最小值,這時可以使用 Collections 的 max 和 min 方法。 例如:

List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(3);
Integer max = Collections.max(list);
Integer min = Collections.min(list);
System.out.println(max);
System.out.println(min);

輸出:

3
1

3. 返回空集合

有時,在檢查為空后,我們需要返回一個空集合,可以使用 emptyList 方法。例如:

private List<Integer> fun(List<Integer> list) {
    if (list == null || list.size() == 0) {
        return Collections.emptyList();
    }
    return list;
}

4. 轉換為不可修改的集合

為了防止后續程序修改某個集合的結果,有時我們需要將某個集合定義為不可修改的。這可以通過使用 Collections 的 unmodifiablexxx 方法輕松實現:

List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(3);
List<Integer> integers = Collections.unmodifiableList(list);
integers.add(4);
System.out.println(integers);

輸出:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.base/java.util.Collections$UnmodifiableCollection.add(Collections.java:1092)
    at com.spring.demo.DemoApplication.main(DemoApplication.java:46)

5. 轉換為線程安全的集合

我們都知道,Java 中的許多集合,如 ArrayList、LinkedList、HashMap、HashSet 等,都不是線程安全的。 換句話說,在多線程環境中,向這些集合中添加數據存在線程安全問題。這時,可以使用 Collections 的 synchronizedxxx 方法直接將這些線程不安全的集合轉換為線程安全的集合。例如:

List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(3);
List<Integer> integers = Collections.synchronizedList(list); //將 ArrayList 轉換為線程安全的集合
System.out.println(integers);

它的底層實現會創建 SynchronizedRandomAccessList 或 SynchronizedList 類。這兩個類的許多方法都會用 synchronized 加鎖。

Collections 工具類中還有許多常用方法,這里就不一一介紹了。

二、CollectionUtils

對于集合操作,除了前面提到的 Collections 工具類,CollectionUtils 工具類也非常常用。目前,比較主流的是 apache 的 org.apache.commons.collections 包下的 CollectionUtils 工具類。

<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.2</version>
</dependency>

它提供了許多方法,例如:

當然,Spring 框架的 org.springframework.util 包下也有 CollectionUtils 工具類。不過,我個人推薦使用 apache 包下的 CollectionUtils 工具類,因為它的工具更多且更全面。舉個簡單的例子,Spring 中的 CollectionUtils 工具類沒有判斷集合是否不為空的方法,而 apache 中的有。 接下來,我們以 apache 中的 CollectionUtils 工具類為例,介紹一些常用方法。

1. 檢查集合是否為空

CollectionUtils 工具類的 isEmpty 方法可以輕松判斷集合是否為空,isNotEmpty 方法判斷集合是否不為空。

List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(3);
if (CollectionUtils.isEmpty(list)) {
    System.out.println("Collection is empty.");
}
if (CollectionUtils.isNotEmpty(list)) {
    System.out.println("Collection is not empty");
}

2. 對兩個集合進行操作

有時我們需要對兩個已有的集合進行操作,比如取交集或并集。

List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(3);
List<Integer> list2 = new ArrayList<>();
list2.add(2);
list2.add(4);
//獲取并集
Collection<Integer> unionList = CollectionUtils.union(list, list2);
System.out.println(unionList);
//獲取交集
Collection<Integer> intersectionList = CollectionUtils.intersection(list, list2);
System.out.println(intersectionList);
//獲取交集的補集
Collection<Integer> disjunctionList = CollectionUtils.disjunction(list, list2);
System.out.println(disjunctionList);
//獲取差集
Collection<Integer> subtractList = CollectionUtils.subtract(list, list2);
System.out.println(subtractList);

執行結果:

[1, 2, 3, 4]
[2]
[1, 3, 4]
[1, 3]

三、Lists

如果你引入 com.google.guava 的依賴,會得到很多有用的工具類。這里推薦一個 com.google.common.collect 包下的集合工具:Lists。

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>28.2-jre</version>
</dependency>

1. 快速初始化集合

有時,我們想初始化集合中的一些元素,這時可以使用 Lists 的 newArrayList 方法。例如:

List<Integer> list = Lists.newArrayList(1, 2, 3);

這比直接創建一個列表然后逐個添加元素更方便。 執行結果:

[1, 2, 3]

2. 笛卡爾積

如果你想對兩個集合進行笛卡爾積操作,Lists 的 cartesianProduct 方法可以幫你實現:

List<Integer> list1 = Lists.newArrayList(1, 2, 3);
List<Integer> list2 = Lists.newArrayList(4, 5);
List<List<Integer>> productList = Lists.cartesianProduct(list1, list2);
System.out.println(productList);

執行結果:

[[1, 4], [1, 5], [2, 4], [2, 5], [3, 4], [3, 5]]

3. 分割集合

如果你想將一個大集合分割成幾個小集合,可以使用 Lists 的 partition 方法:

List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5);
List<List<Integer>> partitionList = Lists.partition(list, 2);
System.out.println(partitionList);

執行結果:

[[1, 2], [3, 4], [5]]

在這個例子中,列表有 5 條數據。我將列表集合分成了 3 份,每份大小為 2,即變成了 3 個小集合。 這是我最喜歡的方法之一,我在項目中經常使用。

4. 流處理

如果我們想對集合內的元素進行操作,可以使用 Lists 的 transform 方法。例如:

List<String> list = Lists.newArrayList("a", "b", "c");
List<String> transformList = Lists.transform(list, x -> x.toUpperCase());
System.out.println(transformList);

小寫字母被轉換為大寫字母。 執行結果:

[A, B, C]

5. 反轉順序

Lists 有一個 reverse() 方法用于反轉順序。例如:

List<Integer> list = Lists.newArrayList(3, 1, 2, 5, 4);
List<Integer> reverseList = Lists.reverse(list);
System.out.println(reverseList);

執行結果:

[4, 5, 2, 1, 3]

Lists 還有其他有用的工具,這里只是舉幾個例子,感興趣的朋友可以自行研究。

四、Objects

在 jdk7 之后,提供了 Objects 工具類,我們可以通過它對對象進行操作。

1. 檢查對象是否為空

在 Java 中,一切皆對象。檢查對象是否為空可以說是無處不在。Objects 的 isNull 方法檢查對象是否為空,nonNull 方法檢查對象是否不為空。例如:

Integer i = new Integer(10);
if (Objects.isNull(i)) {
    System.out.println("Object is null");
}
if (Objects.nonNull(i)) {
    System.out.println("Object is not null");
}

2. 對象為空時拋出異常

如果我們想在對象為空時拋出空指針異常,可以使用 Objects 的 requireNonNull 方法。例如:

Integer i = new Integer(128);
Objects.requireNonNull(i);
Objects.requireNonNull(i, "Parameters cannot be null");
Objects.requireNonNull(i, () -> "Parameters cannot be null");

3. 檢查兩個對象是否相等

我們經常需要檢查兩個對象是否相等。Objects 為我們提供了 equals 方法,可以很方便地實現:

Integer i1 = new Integer(1);
Integer i2 = new Integer(1);
System.out.println(Objects.equals(i1, i2));

執行結果:

true

但是使用這個方法時有一個坑。例如,如果將例子改為:

Integer i = new Integer(1);
Long l = new Long(1);
System.out.println(Objects.equals(i, l));

執行結果:

false

你知道為什么輸出為 false 嗎?可以在評論區交流。

4. 獲取對象的哈希碼

如果你想獲取某個對象的哈希碼,可以使用 Objects 的 hashCode 方法。例如:

String str = new String("abc");
System.out.println(Objects.hashCode(str));

執行結果:

96354

關于 Objects 的內容就介紹到這里,更多的方法可以自行研究。

五、StringUtils

字符串在我們的日常工作中使用得非常頻繁。在我們的代碼中,經常需要檢查字符串是否為空、轉換大小寫、分割字符串、比較字符串、去除多余空格、連接字符串、使用正則表達式等等。 如果我們只使用 String 類提供的方法,就需要手動編寫大量額外的代碼,既耗時又費力。作為程序員,當然要學會偷懶。現在有一個現成的工具類,即 org.apache.commons.lang3 包下的 StringUtils 工具類,它為我們提供了非常多操作 String 的方法。

1. 檢查字符串是否為空

實際上,對于空字符串,不僅有 null,還有“”、“ ”、“null”等多種情況。StringUtils 為我們提供了多個靜態方法來檢查字符串是否為空。例如:

String str1 = null;
String str2 = "";
String str3 = " ";
String str4 = "abc";
System.out.println(StringUtils.isEmpty(str1));
System.out.println(StringUtils.isEmpty(str2));
System.out.println(StringUtils.isEmpty(str3));
System.out.println(StringUtils.isEmpty(str4));
System.out.println("-------------------------------------");
System.out.println(StringUtils.isNotEmpty(str1));
System.out.println(StringUtils.isNotEmpty(str2));
System.out.println(StringUtils.isNotEmpty(str3));
System.out.println(StringUtils.isNotEmpty(str4));
System.out.println("-------------------------------------");
System.out.println(StringUtils.isBlank(str1));
System.out.println(StringUtils.isBlank(str2));
System.out.println(StringUtils.isBlank(str3));
System.out.println(StringUtils.isBlank(str4));
System.out.println("-------------------------------------");
System.out.println(StringUtils.isNotBlank(str1));
System.out.println(StringUtils.isNotBlank(str2));
System.out.println(StringUtils.isNotBlank(str3));
System.out.println(StringUtils.isNotBlank(str4));

輸出:

true
true
false
false
false
false
true
true
true
true
true
false
false
false
false
true

示例中的四個空檢查方法:isEmpty、isNotEmpty、isBlank 和 isNotBlank。你可以根據實際情況使用這些方法。 建議優先使用 isBlank 和 isNotBlank 方法,因為它們會考慮更多情況。

2. 分割字符串

分割字符串是一個常見需求。如果直接使用 String 類的 split 方法,可能會出現空指針異常。

String str1 = null;
System.out.println(StringUtils.split(str1, ","));
System.out.println(str1.split(","));

輸出:

Exception in thread "main" java.lang.NullPointerException
    at java.base/java.util.Objects.requireNonNull(Objects.java:221)
    at java.base/java.util.regex.Pattern.split(Pattern.java:1269)
    at java.base/java.lang.String.split(String.java:2392)
    at com.spring.demo.DemoApplication.main(DemoApplication.java:39)

使用 StringUtils 的 split 方法會返回 null,而使用 String 的 split 方法會報指針異常。

3. 檢查是否為純數字

給定一個字符串,要檢查它是否為純數字,可以使用 isNumeric 方法。例如:

String str1 = "123";
String str2 = "123abc";
String str3 = "0.33";
System.out.println(StringUtils.isNumeric(str1));
System.out.println(StringUtils.isNumeric(str2));
System.out.println(StringUtils.isNumeric(str3));

輸出:

true
false
false

4. 將集合連接成字符串

有時,我們需要將集合的內容連接成一個字符串然后輸出,這時可以使用 join 方法。例如:

List<String> list = Lists.newArrayList("a", "b", "c");
List<Integer> list2 = Lists.newArrayList(1, 2, 3);
System.out.println(StringUtils.join(list, ","));
System.out.println(StringUtils.join(list2, " "));

輸出:

a,b,c
1 2 3

還有很多實用的方法,這里就不一一介紹了。

六、BeanUtils

Spring 為我們提供了一個用于 JavaBean 的工具類,它在 org.springframework.beans 包下,名字是:BeanUtils。

1. 復制對象屬性

你是否遇到過這樣的需求:將某個對象的所有屬性復制到另一個對象。這時可以使用 BeanUtils 的 copyProperties 方法。例如:

User user1 = new User();
user1.setId(1L);
user1.setName("Dylan");
user1.setAddress("Hong Kong");
User user2 = new User();
BeanUtils.copyProperties(user1, user2);
System.out.println(user2);

2. 獲取指定類的指定方法

如果你想獲取某個類的指定方法以便后續操作,可以使用 BeanUtils 的 findDeclaredMethod 方法。例如:

Method declaredMethod = BeanUtils.findDeclaredMethod(User.class, "getId");
System.out.println(declaredMethod.getName());

3. 獲取指定方法的參數

如果你想獲取某個方法的參數,可以使用 BeanUtils 的 findPropertyForMethod 方法。例如:

Method declaredMethod = BeanUtils.findDeclaredMethod(User.class, "getId");
PropertyDescriptor propertyForMethod = BeanUtils.findPropertyForMethod(declaredMethod);
System.out.println(propertyForMethod.getName());

還有很多實用的方法,這里就不一一介紹了。

七、ReflectionUtils

有時,我們在項目中需要使用反射功能。如果使用最原始的方法開發,代碼量會非常大且麻煩,需要處理大量異常和訪問權限問題。 好消息是,Spring 為我們提供了一個 ReflectionUtils 工具類,它在 org.springframework.util 包下。

1. 獲取方法

如果你想獲取某個類的某個方法,可以使用 ReflectionUtils 類的 findMethod 方法。例如:

Method method = ReflectionUtils.findMethod(User.class, "getId");

2. 獲取字段

如果你想獲取某個類的某個字段,可以使用 ReflectionUtils 類的 findField 方法。例如:

Field field = ReflectionUtils.findField(User.class, "id");

3. 執行方法

如果你想通過反射調用某個方法并傳遞參數,可以使用 ReflectionUtils 類的 invokeMethod 方法。例如:

ReflectionUtils.invokeMethod(method, springContextsUtil.getBean(beanName), param);

4. 檢查字段是否為常量

如果你想檢查某個字段是否為常量,可以使用 ReflectionUtils 類的 isPublicStaticFinal 方法。例如:

Field field = ReflectionUtils.findField(User.class, "id");
System.out.println(ReflectionUtils.isPublicStaticFinal(field));

5. 檢查是否為 equals 方法

如果你想檢查某個方法是否為 equals 方法,可以使用 ReflectionUtils 類的 isEqualsMethod 方法。例如:

Method method = ReflectionUtils.findMethod(User.class, "getId");
System.out.println(ReflectionUtils.isEqualsMethod(method));

還有很多實用的方法,這里就不一一介紹了。

八、DigestUtils

有時,我們需要對數據進行加密,比如使用 md5 或 sha256。我們可以使用 Apache 的 org.apache.commons.codec.digest 包下的 DigestUtils 類。

1. MD5 加密

如果你想使用 MD5 加密數據,可以使用 DigestUtils 的 md5Hex 方法。例如:

String md5Hex = DigestUtils.md5Hex("Dylan");
System.out.println(md5Hex);

2. SHA256 加密

如果你想使用 SHA256 加密數據,可以使用 DigestUtils 的 sha256Hex 方法。例如:

String md5Hex = DigestUtils.sha256Hex("Dylan");
System.out.println(md5Hex);

這個工具類還有許多其他加密方法:

九、HttpStatus

很多時候,我們會在代碼中定義 HTTP 返回碼。例如,正常接口返回 200,異常返回 500,如果接口找不到則返回 404。

private int SUCCESS_CODE = 200;
private int ERROR_CODE = 500;
private int NOT_FOUND_CODE = 404;

實際上,org.springframework.http 包下的 HttpStatus 枚舉或 org.apache.http 包下的 HttpStatus 接口已經為我們定義了常用的 HTTP 返回碼,我們可以直接使用,真的不需要重新定義。以下是 HttpStatus 類的部分內容:

總結

在這篇文章中,我介紹了 Java 開發中 9 個非常實用的工具類,它們可以幫助我們提高開發效率,減少重復代碼,并簡化日常的開發任務。從集合操作到字符串處理,從對象操作到反射機制,再到數據加密和 HTTP 狀態碼處理,這些工具類提供了強大而靈活的功能,讓我們能夠更加專注于業務邏輯的實現,而不是底層細節的處理。

責任編輯:趙寧寧 來源: 程序猿技術充電站
相關推薦

2024-11-28 13:07:33

2025-06-30 02:25:00

2016-10-09 20:07:43

2019-08-23 19:22:31

SQL語句效率提升數據庫

2024-07-17 08:25:44

2017-04-18 10:36:17

FireFox工具前端開發

2021-07-16 23:32:28

工具職場軟件

2020-03-29 11:46:16

前端開發前端工具

2025-11-14 04:00:00

2015-11-10 10:11:32

ios開發工具效率

2020-09-23 16:51:15

辦公軟件電腦技術

2020-07-25 19:38:54

JavaScriptJavaScript庫Web

2021-12-06 10:07:48

開源項目Vue3

2021-12-17 15:03:50

Python工具代碼

2025-03-04 13:00:00

JavaScrip代碼語言

2021-04-19 17:12:53

網站工具

2020-07-09 10:02:27

Python開發工具

2024-05-28 14:36:00

Python開發

2025-04-28 10:16:35

VSCode插件開發

2025-09-01 04:00:15

VSCode插件Github
點贊
收藏

51CTO技術棧公眾號

免费在线观看黄色网| 亚洲第一精品在线观看 | 国产精品99久久久久久动医院| 欧美日韩你懂的| 久艹在线免费观看| 国产尤物视频在线| 国产白丝精品91爽爽久久| 欧美亚洲视频一区二区| 少妇高潮在线观看| 任你躁在线精品免费| 欧美日韩精品一区二区三区蜜桃 | 日韩精品久久久久久久玫瑰园| 亚洲精品一二三四五区| 91高清在线观看视频| 26uuu精品一区二区三区四区在线| 国产精品网站大全| 国产区在线观看视频| 99久久99久久精品国产片桃花 | 亚洲熟妇一区二区三区| 自拍偷拍欧美日韩| 色欧美乱欧美15图片| 老司机午夜网站| 风间由美一区| 成人av电影在线播放| 国产中文欧美精品| 九九精品免费视频| 亚洲国内自拍| 久久av资源网站| 国产高清一区二区三区四区| 亚洲一区电影| 3atv在线一区二区三区| 国产视频在线视频| 蜜桃麻豆影像在线观看| 亚洲综合激情小说| 水蜜桃在线免费观看| aaa在线观看| 久久午夜电影网| 国产亚洲情侣一区二区无| 国产丰满果冻videossex| 日韩高清中文字幕一区| 国产91精品久久久久久久| 精品一区免费观看| 国产一区二区三区四区三区四| 色视频www在线播放国产成人| 国产熟妇搡bbbb搡bbbb| 香蕉久久夜色精品国产更新时间| 亚洲第一网站免费视频| 黄色av电影网站| 视频二区欧美毛片免费观看| 777午夜精品视频在线播放| 亚洲色图 在线视频| 不卡福利视频| 日韩欧美国产高清91| 精品久久久久久久久久中文字幕| 成全电影大全在线观看| 亚洲一区二区三区四区在线 | 亚洲夜间福利| 欧美精品福利视频| 日本视频www| 亚洲国产一区二区三区a毛片 | 亚洲欧洲黄色网| 永久免费成人代码| 成人动漫免费在线观看| 日韩中文字幕精品| 国产黄色小视频网站| 欧美va亚洲va日韩∨a综合色| 久久精品成人一区二区三区| 久久人妻无码aⅴ毛片a片app| 午夜欧美在线| 欧美成年人网站| 国产一级一级片| 亚洲免费网站| 国产成人精品午夜| 亚洲天堂avav| 高清国产一区二区| 久久久久综合一区二区三区| 国产视频精选在线| 亚洲欧美偷拍卡通变态| 免费高清一区二区三区| 亚洲妇女成熟| 欧美日韩国产高清一区二区| 99国产精品免费视频| 免费福利视频一区| 一区二区三区天堂av| 精品人妻伦九区久久aaa片| 亚洲黄色在线| 国产精品高潮在线| 精品久久久久中文慕人妻| 国产成人精品一区二区三区四区| 国产一区喷水| 日本视频不卡| 亚洲一区二区三区自拍| 欧美日韩在线成人| 精品国产麻豆| 亚洲视频精品在线| 国产va在线播放| 老司机一区二区三区| 国产专区精品视频| 视频午夜在线| 亚洲欧美日韩在线| 日韩av黄色网址| 不卡一区视频| 亚洲免费视频一区二区| 欧美性猛交xxxxx少妇| 翔田千里一区二区| 亚洲自拍av在线| 国产高清视频在线观看| 亚洲国产成人tv| 亚洲欧洲日本精品| 天堂俺去俺来也www久久婷婷 | 精品日本一线二线三线不卡| 人人爽人人爽人人片| 亚洲高清网站| 91免费在线视频| 精品无人乱码| 亚洲成人免费观看| 午夜免费视频网站| 成人6969www免费视频| 57pao成人永久免费视频| 国产福利第一视频| 国产精品沙发午睡系列990531| heyzo亚洲| 一区二区三区四区高清视频| 色七七影院综合| 波多野结衣网站| www.性欧美| 久久成人福利视频| 午夜视频一区二区在线观看| 色黄久久久久久| 波多野结衣一区二区三区四区| 99久久久精品| 91动漫在线看| 97视频一区| 欧美理论片在线观看| 国产又粗又猛又爽| 中文字幕在线不卡一区二区三区| 国产真人无码作爱视频免费| 四虎5151久久欧美毛片| 国产91精品黑色丝袜高跟鞋| 天天爱天天干天天操| 亚洲电影中文字幕在线观看| 中文字幕久久久久久久| 欧美精品综合| 国产精品一区二区在线观看| aa级大片免费在线观看| 亚洲国产精品久久久久| 欧美成人aaaaⅴ片在线看| 成人黄色一级视频| 日韩日韩日韩日韩日韩| 国偷自产av一区二区三区| 久久69精品久久久久久久电影好| 国产精品无码AV| 一区二区三区精品视频在线| 久草福利在线观看| 极品中文字幕一区| 久久精品日产第一区二区三区精品版| 麻豆视频在线看| 亚洲男人天堂网站| 99re热视频| 最新日韩av在线| 波多野结衣中文字幕在线播放| 欧美激情综合色综合啪啪| 91精品国产91久久久久青草| 男女视频在线| 日韩激情视频在线播放| 国产又大又粗又爽| 国产精品你懂的在线欣赏| 性久久久久久久久久久久久久| 欧美 亚欧 日韩视频在线| 成人免费91在线看| 美女网站在线看| 中国日韩欧美久久久久久久久| 97人妻精品一区二区三区| 一区二区三区在线高清| 日本护士做爰视频| 免费观看在线色综合| 看一级黄色录像| 国产精品极品国产中出| 国产成人综合亚洲| 91精品国产91久久久久久青草| 亚洲黄色www网站| 最近中文字幕在线观看| 亚洲美女一区二区三区| 香港三级日本三级| 麻豆国产欧美日韩综合精品二区| 欧美交换配乱吟粗大25p| 色狠狠久久av综合| 成人国产精品一区二区| 咪咪网在线视频| 精品国产一区久久久| 无码国产伦一区二区三区视频 | 蜜桃91麻豆精品一二三区| 日韩欧美亚洲一二三区| 一级片一级片一级片| av电影在线观看不卡| 高潮一区二区三区| 国产视频一区在线观看一区免费| 亚洲午夜在线观看| 秋霞影视一区二区三区| 7777精品久久久大香线蕉小说| 中文一区一区三区高中清不卡免费 | 欧美专区第一页| av片在线观看永久免费| 亚洲天堂av综合网| 成人免费观看在线视频| 欧美日韩成人高清| 精品国产一区二区三区四| 亚洲人成伊人成综合网小说| 男人天堂av电影| 国产 日韩 欧美大片| 亚洲欧美日本一区二区| 久久精品天堂| 日本午夜激情视频| 欧美日韩日本国产亚洲在线| 偷拍视频一区二区| 色狼人综合干| 超碰97人人人人人蜜桃| 日本一区二区三区中文字幕| 青青久久av北条麻妃黑人| av电影在线免费| 色综合视频一区中文字幕| 日本在线免费网| 亚洲午夜久久久影院| 无码精品视频一区二区三区| 日韩免费福利电影在线观看| 97精品久久人人爽人人爽| 日本电影亚洲天堂一区| 伊人久久综合视频| 一区二区不卡在线视频 午夜欧美不卡在 | 在线观看免费视频a| 91久久精品一区二区| 黄色片中文字幕| 高跟丝袜欧美一区| 中文字幕一区二区三区精品| 亚洲一二三四在线| 久久午夜无码鲁丝片午夜精品| 亚洲人成小说网站色在线| 一级免费黄色录像| 国产精品―色哟哟| 成人黄色短视频| 中文字幕一区在线| 91精品一区二区三区在线观看| 亚洲の无码国产の无码步美| 国产69精品久久久久毛片| 中文字幕一二三区| 高清国产一区二区三区| 亚洲国产精品第一页| 成人天堂资源www在线| 美女搡bbb又爽又猛又黄www| 国产成人av网站| 亚洲黄色小说在线观看| 成人毛片视频在线观看| 亚洲激情 欧美| 99精品久久只有精品| 日本黄色网址大全| 久久久久久久久蜜桃| 性猛交ⅹxxx富婆video | 日韩久久免费av| 精品人妻一区二区三区日产乱码| 日韩欧美亚洲一区二区| 懂色av成人一区二区三区| 亚洲精品av在线| 欧洲毛片在线| 深夜福利国产精品| 亚洲小说区图片区都市| 久久久免费在线观看| 在线日韩影院| 国产日韩欧美夫妻视频在线观看| 日本免费在线一区| 国产精品swag| 免费看av成人| 一区二区视频国产| 一区久久精品| 日韩一级片播放| 国产在线观看一区二区| 国产不卡一二三| 国产日韩av一区二区| 久久久精品少妇| 亚洲成av人片一区二区三区| 在线永久看片免费的视频| 欧美日本在线一区| 天堂在线视频观看| 亚洲欧美三级在线| 97caopron在线视频| 26uuu另类亚洲欧美日本一| 日韩成人一区| 99r国产精品视频| 欧美男gay| 成年人深夜视频| 久久香蕉精品| 婷婷激情综合五月天| 91浏览器在线视频| 欧美激情图片小说| 色综合久久88色综合天天6| 在线视频 中文字幕| 精品国产污污免费网站入口 | 日韩精品导航| 熟妇熟女乱妇乱女网站| 免费在线播放第一区高清av| 九九久久久久久| 久久亚洲免费视频| 免费在线观看国产精品| 色婷婷综合五月| 人妻精品无码一区二区| 久久精品国产欧美亚洲人人爽| 国模精品视频| 99在线国产| 日韩在线欧美| 青青青在线播放| 高清视频一区二区| 一区二区视频免费看| 在线观看欧美黄色| 污污视频在线免费看| 美女999久久久精品视频| 992tv国产精品成人影院| 久久久av水蜜桃| 亚洲福利一区| 中国特级黄色片| 亚洲三级在线免费| 一本到在线视频| 中文字幕精品av| 超碰超碰人人人人精品| 国内视频一区| 精品动漫一区| 成年女人免费视频| 亚洲靠逼com| 国产又黄又猛又爽| x99av成人免费| 久久亚洲资源中文字| 日韩在线观看电影完整版高清免费| 亚洲精品在线二区| 精品1卡二卡三卡四卡老狼| 亚洲精品第一国产综合野| 国产乱码一区二区| 久久av在线看| 亚洲精品观看| 妞干网视频在线观看| 国产乱码精品一区二区三区五月婷| 美女100%露胸无遮挡| 欧美伊人精品成人久久综合97| 男人的天堂在线视频| 2025国产精品视频| 色棕色天天综合网| 国产黄色特级片| 国产欧美一区二区三区在线老狼| 一级一片免费看| 一区二区三区视频免费| 国产精品66| 四虎永久免费网站| 国产成人在线视频免费播放| 欧美黑人一级片| 精品成人一区二区| 天堂资源在线| 日韩高清三级| 极品少妇一区二区| 国产又粗又硬又长又爽| 日韩欧美国产一区二区在线播放| 欧洲一区二区三区| 精品免费国产| 日韩精品亚洲专区| 色哟哟一一国产精品| 日韩久久久精品| 婷婷电影在线观看| 水蜜桃亚洲一二三四在线| 久久精品72免费观看| 国产盗摄x88av| 亚洲精品美女在线观看| 深夜视频一区二区| 日本黄色播放器| 成人av电影免费在线播放| 无码人妻精品一区二区蜜桃色欲| 一个人www欧美| 网站一区二区| 韩国一区二区av| ●精品国产综合乱码久久久久 | 亚洲欧美久久精品| 国产精品久久久久久久久电影网| 91亚洲男人天堂| 伊人精品在线视频| 欧美激情一区二区三区久久久| 久久电影在线| 91极品尤物在线播放国产| 一区二区免费视频| 国产福利第一视频在线播放| 4444kk亚洲人成电影在线| 久久视频一区| 免费又黄又爽又色的视频| 亚洲视频国产视频| 亚洲日本va中文字幕| 亚洲欧美另类动漫| 亚洲一区日韩精品中文字幕| 男人天堂网在线观看| av免费精品一区二区三区| 天使萌一区二区三区免费观看| 国产乱国产乱老熟300| 亚洲欧洲视频在线| 18国产精品| 日韩高清第一页| 日韩欧美在线国产| 色呦呦在线视频|