日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

stream 过滤俩个字段_Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合...

發布時間:2023/12/2 java 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stream 过滤俩个字段_Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點波關注不迷路,一鍵三連好運連連!

先貼上幾個案例,水平高超的同學可以挑戰一下:

從員工集合中篩選出salary大于8000的員工,并放置到新的集合里。

統計員工的最高薪資、平均薪資、薪資之和。

將員工按薪資從高到低排序,同樣薪資者年齡小者在前。

將員工按性別分類,將員工按性別和地區分類,將員工按薪資是否高于8000分為兩部分。

用傳統的迭代處理也不是很難,但代碼就顯得冗余了,跟Stream相比高下立判。

1 Stream概述

Java 8 是一個非常成功的版本,這個版本新增的Stream,配合同版本出現的 Lambda ,給我們操作集合(Collection)提供了極大的便利。

那么什么是Stream?

Stream將要處理的元素集合看作一種流,在流的過程中,借助Stream API對流中的元素進行操作,比如:篩選、排序、聚合等。

Stream可以由數組或集合創建,對流的操作分為兩種:

中間操作,每次返回一個新的流,可以有多個。

終端操作,每個流只能進行一次終端操作,終端操作結束后流無法再次使用。終端操作會產生一個新的集合或值。

另外,Stream有幾個特性:

stream不存儲數據,而是按照特定的規則對數據進行計算,一般會輸出結果。

stream不會改變數據源,通常情況下會產生一個新的集合或一個值。

stream具有延遲執行特性,只有調用終端操作時,中間操作才會執行。

2 Stream的創建

Stream可以通過集合數組創建。

1、通過 java.util.Collection.stream() 方法用集合創建流

List list = Arrays.asList("a", "b", "c");

// 創建一個順序流

Stream stream = list.stream();

// 創建一個并行流

Stream parallelStream = list.parallelStream();

2、使用java.util.Arrays.stream(T[] array)方法用數組創建流

int[] array={1,3,5,6,8};

IntStream stream = Arrays.stream(array);

3、使用Stream的靜態方法:of()、iterate()、generate()

Stream stream = Stream.of(1, 2, 3, 4, 5, 6);

Stream stream2 = Stream.iterate(0, (x) -> x + 3).limit(4);

stream2.forEach(System.out::println); // 0 2 4 6 8 10

Stream stream3 = Stream.generate(Math::random).limit(3);

stream3.forEach(System.out::println);

輸出結果:

0 3 6 9

0.6796156909271994

0.1914314208854283

0.8116932592396652

stream和parallelStream的簡單區分: stream是順序流,由主線程按順序對流執行操作,而parallelStream是并行流,內部以多線程并行執行的方式對流進行操作,但前提是流中的數據處理沒有順序要求。例如篩選集合中的奇數,兩者的處理不同之處:

如果流中的數據量足夠大,并行流可以加快處速度。

除了直接創建并行流,還可以通過parallel()把順序流轉換成并行流:

Optional findFirst = list.stream().parallel().filter(x->x>6).findFirst();

3 Stream的使用

在使用stream之前,先理解一個概念:Optional 。

Optional類是一個可以為null的容器對象。如果值存在則isPresent()方法會返回true,調用get()方法會返回該對象。

更詳細說明請見:菜鳥教程Java 8 Optional類

接下來,大批代碼向你襲來!我將用20個案例將Stream的使用整得明明白白,只要跟著敲一遍代碼,就能很好地掌握。

案例使用的員工類

這是后面案例中使用的員工類:

List personList = new ArrayList();

personList.add(new Person("Tom", 8900, "male", "New York"));

personList.add(new Person("Jack", 7000, "male", "Washington"));

personList.add(new Person("Lily", 7800, "female", "Washington"));

personList.add(new Person("Anni", 8200, "female", "New York"));

personList.add(new Person("Owen", 9500, "male", "New York"));

personList.add(new Person("Alisa", 7900, "female", "New York"));

class Person {

private String name; // 姓名

private int salary; // 薪資

private int age; // 年齡

private String sex; //性別

private String area; // 地區

// 構造方法

public Person(String name, int salary, int age,String sex,String area) {

this.name = name;

this.salary = salary;

this.age = age;

this.sex = sex;

this.area = area;

}

// 省略了get和set,請自行添加

}

3.1 遍歷/匹配(foreach/find/match)

Stream也是支持類似集合的遍歷和匹配元素的,只是Stream中的元素是以Optional類型存在的。Stream的遍歷、匹配非常簡單。

// import已省略,請自行添加,后面代碼亦是

public class StreamTest {

public static void main(String[] args) {

List list = Arrays.asList(7, 6, 9, 3, 8, 2, 1);

// 遍歷輸出符合條件的元素

list.stream().filter(x -> x > 6).forEach(System.out::println);

// 匹配第一個

Optional findFirst = list.stream().filter(x -> x > 6).findFirst();

// 匹配任意(適用于并行流)

Optional findAny = list.parallelStream().filter(x -> x > 6).findAny();

// 是否包含符合特定條件的元素

boolean anyMatch = list.stream().anyMatch(x -> x < 6);

System.out.println("匹配第一個值:" + findFirst.get());

System.out.println("匹配任意一個值:" + findAny.get());

System.out.println("是否存在大于6的值:" + anyMatch);

}

}

3.2 篩選(filter)

篩選,是按照一定的規則校驗流中的元素,將符合條件的元素提取到新的流中的操作。

案例一:篩選出Integer集合中大于7的元素,并打印出來

public class StreamTest {

public static void main(String[] args) {

List list = Arrays.asList(6, 7, 3, 8, 1, 2, 9);

Stream stream = list.stream();

stream.filter(x -> x > 7).forEach(System.out::println);

}

}

預期結果:

8 9

案例二: 篩選員工中工資高于8000的人,并形成新的集合。 形成新集合依賴collect(收集),后文有詳細介紹。

public class StreamTest {

public static void main(String[] args) {

List personList = new ArrayList();

personList.add(new Person("Tom", 8900, 23, "male", "New York"));

personList.add(new Person("Jack", 7000, 25, "male", "Washington"));

personList.add(new Person("Lily", 7800, 21, "female", "Washington"));

personList.add(new Person("Anni", 8200, 24, "female", "New York"));

personList.add(new Person("Owen", 9500, 25, "male", "New York"));

personList.add(new Person("Alisa", 7900, 26, "female", "New York"));

List fiterList = personList.stream().filter(x -> x.getSalary() > 8000).map(Person::getName)

.collect(Collectors.toList());

System.out.print("高于8000的員工姓名:" + fiterList);

}

}

運行結果:

高于8000的員工姓名:[Tom, Anni, Owen]

3.3 聚合(max/min/count)

max、min、count這些字眼你一定不陌生,沒錯,在mysql中我們常用它們進行數據統計。Java stream中也引入了這些概念和用法,極大地方便了我們對集合、數組的數據統計工作。

案例一:獲取String集合中最長的元素。

public class StreamTest {

public static void main(String[] args) {

List list = Arrays.asList("adnm", "admmt", "pot", "xbangd", "weoujgsd");

Optional max = list.stream().max(Comparator.comparing(String::length));

System.out.println("最長的字符串:" + max.get());

}

}

輸出結果:

最長的字符串:weoujgsd

案例二:獲取Integer集合中的最大值。

public class StreamTest {

public static void main(String[] args) {

List list = Arrays.asList(7, 6, 9, 4, 11, 6);

// 自然排序

Optional max = list.stream().max(Integer::compareTo);

// 自定義排序

Optional max2 = list.stream().max(new Comparator() {

@Override

public int compare(Integer o1, Integer o2) {

return o1.compareTo(o2);

}

});

System.out.println("自然排序的最大值:" + max.get());

System.out.println("自定義排序的最大值:" + max2.get());

}

}

輸出結果:

自然排序的最大值:11

自定義排序的最大值:11

案例三:獲取員工工資最高的人。

public class StreamTest {

public static void main(String[] args) {

List personList = new ArrayList();

personList.add(new Person("Tom", 8900, 23, "male", "New York"));

personList.add(new Person("Jack", 7000, 25, "male", "Washington"));

personList.add(new Person("Lily", 7800, 21, "female", "Washington"));

personList.add(new Person("Anni", 8200, 24, "female", "New York"));

personList.add(new Person("Owen", 9500, 25, "male", "New York"));

personList.add(new Person("Alisa", 7900, 26, "female", "New York"));

Optional max = personList.stream().max(Comparator.comparingInt(Person::getSalary));

System.out.println("員工工資最大值:" + max.get().getSalary());

}

}

輸出結果:

員工工資最大值:9500

案例四:計算Integer集合中大于6的元素的個數。

import java.util.Arrays;

import java.util.List;

public class StreamTest {

public static void main(String[] args) {

List list = Arrays.asList(7, 6, 4, 8, 2, 11, 9);

long count = list.stream().filter(x -> x > 6).count();

System.out.println("list中大于6的元素個數:" + count);

}

}

輸出結果:

list中大于6的元素個數:4

3.4 映射(map/flatMap)

映射,可以將一個流的元素按照一定的映射規則映射到另一個流中。分為map和flatMap:

map:接收一個函數作為參數,該函數會被應用到每個元素上,并將其映射成一個新的元素。

flatMap:接收一個函數作為參數,將流中的每個值都換成另一個流,然后把所有流連接成一個流。

案例一:英文字符串數組的元素全部改為大寫。整數數組每個元素+3。

public class StreamTest {

public static void main(String[] args) {

String[] strArr = { "abcd", "bcdd", "defde", "fTr" };

List strList = Arrays.stream(strArr).map(String::toUpperCase).collect(Collectors.toList());

List intList = Arrays.asList(1, 3, 5, 7, 9, 11);

List intListNew = intList.stream().map(x -> x + 3).collect(Collectors.toList());

System.out.println("每個元素大寫:" + strList);

System.out.println("每個元素+3:" + intListNew);

}

}

輸出結果:

每個元素大寫:[ABCD, BCDD, DEFDE, FTR]

每個元素+3:[4, 6, 8, 10, 12, 14]

案例二:將員工的薪資全部增加1000。

public class StreamTest {

public static void main(String[] args) {

List personList = new ArrayList();

personList.add(new Person("Tom", 8900, 23, "male", "New York"));

personList.add(new Person("Jack", 7000, 25, "male", "Washington"));

personList.add(new Person("Lily", 7800, 21, "female", "Washington"));

personList.add(new Person("Anni", 8200, 24, "female", "New York"));

personList.add(new Person("Owen", 9500, 25, "male", "New York"));

personList.add(new Person("Alisa", 7900, 26, "female", "New York"));

// 不改變原來員工集合的方式

List personListNew = personList.stream().map(person -> {

Person personNew = new Person(person.getName(), 0, 0, null, null);

personNew.setSalary(person.getSalary() + 10000);

return personNew;

}).collect(Collectors.toList());

System.out.println("一次改動前:" + personList.get(0).getName() + "-->" + personList.get(0).getSalary());

System.out.println("一次改動后:" + personListNew.get(0).getName() + "-->" + personListNew.get(0).getSalary());

// 改變原來員工集合的方式

List personListNew2 = personList.stream().map(person -> {

person.setSalary(person.getSalary() + 10000);

return person;

}).collect(Collectors.toList());

System.out.println("二次改動前:" + personList.get(0).getName() + "-->" + personListNew.get(0).getSalary());

System.out.println("二次改動后:" + personListNew2.get(0).getName() + "-->" + personListNew.get(0).getSalary());

}

}

輸出結果:

一次改動前:Tom–>8900

一次改動后:Tom–>18900

二次改動前:Tom–>18900

二次改動后:Tom–>18900

案例三:將兩個字符數組合并成一個新的字符數組。

public class StreamTest {

public static void main(String[] args) {

List list = Arrays.asList("m,k,l,a", "1,3,5,7");

List listNew = list.stream().flatMap(s -> {

// 將每個元素轉換成一個stream

String[] split = s.split(",");

Stream s2 = Arrays.stream(split);

return s2;

}).collect(Collectors.toList());

System.out.println("處理前的集合:" + list);

System.out.println("處理后的集合:" + listNew);

}

}

輸出結果:

處理前的集合:[m-k-l-a, 1-3-5]

處理后的集合:[m, k, l, a, 1, 3, 5]

3.5 歸約(reduce)

歸約,也稱縮減,顧名思義,是把一個流縮減成一個值,能實現對集合求和、求乘積和求最值操作。

案例一:求Integer集合的元素之和、乘積和最大值。

public class StreamTest {

public static void main(String[] args) {

List list = Arrays.asList(1, 3, 2, 8, 11, 4);

// 求和方式1

Optional sum = list.stream().reduce((x, y) -> x + y);

// 求和方式2

Optional sum2 = list.stream().reduce(Integer::sum);

// 求和方式3

Integer sum3 = list.stream().reduce(0, Integer::sum);

// 求乘積

Optional product = list.stream().reduce((x, y) -> x * y);

// 求最大值方式1

Optional max = list.stream().reduce((x, y) -> x > y ? x : y);

// 求最大值寫法2

Integer max2 = list.stream().reduce(1, Integer::max);

System.out.println("list求和:" + sum.get() + "," + sum2.get() + "," + sum3);

System.out.println("list求積:" + product.get());

System.out.println("list求和:" + max.get() + "," + max2);

}

}

輸出結果:

list求和:29,29,29

list求積:2112

list求和:11,11

案例二:求所有員工的工資之和和最高工資。

public class StreamTest {

public static void main(String[] args) {

List personList = new ArrayList();

personList.add(new Person("Tom", 8900, 23, "male", "New York"));

personList.add(new Person("Jack", 7000, 25, "male", "Washington"));

personList.add(new Person("Lily", 7800, 21, "female", "Washington"));

personList.add(new Person("Anni", 8200, 24, "female", "New York"));

personList.add(new Person("Owen", 9500, 25, "male", "New York"));

personList.add(new Person("Alisa", 7900, 26, "female", "New York"));

// 求工資之和方式1:

Optional sumSalary = personList.stream().map(Person::getSalary).reduce(Integer::sum);

// 求工資之和方式2:

Integer sumSalary2 = personList.stream().reduce(0, (sum, p) -> sum += p.getSalary(),

(sum1, sum2) -> sum1 + sum2);

// 求工資之和方式3:

Integer sumSalary3 = personList.stream().reduce(0, (sum, p) -> sum += p.getSalary(), Integer::sum);

// 求最高工資方式1:

Integer maxSalary = personList.stream().reduce(0, (max, p) -> max > p.getSalary() ? max : p.getSalary(),

Integer::max);

// 求最高工資方式2:

Integer maxSalary2 = personList.stream().reduce(0, (max, p) -> max > p.getSalary() ? max : p.getSalary(),

(max1, max2) -> max1 > max2 ? max1 : max2);

System.out.println("工資之和:" + sumSalary.get() + "," + sumSalary2 + "," + sumSalary3);

System.out.println("最高工資:" + maxSalary + "," + maxSalary2);

}

}

輸出結果:

工資之和:49300,49300,49300

最高工資:9500,9500

3.6 收集(collect)

collect,收集,可以說是內容最繁多、功能最豐富的部分了。從字面上去理解,就是把一個流收集起來,最終可以是收集成一個值也可以收集成一個新的集合。

collect主要依賴java.util.stream.Collectors類內置的靜態方法。

3.6.1 歸集(toList/toSet/toMap)

因為流不存儲數據,那么在流中的數據完成處理后,需要將流中的數據重新歸集到新的集合里。toList、toSet和toMap比較常用,另外還有toCollection、toConcurrentMap等復雜一些的用法。

下面用一個案例演示toList、toSet和toMap:

public class StreamTest {

public static void main(String[] args) {

List list = Arrays.asList(1, 6, 3, 4, 6, 7, 9, 6, 20);

List listNew = list.stream().filter(x -> x % 2 == 0).collect(Collectors.toList());

Set set = list.stream().filter(x -> x % 2 == 0).collect(Collectors.toSet());

List personList = new ArrayList();

personList.add(new Person("Tom", 8900, 23, "male", "New York"));

personList.add(new Person("Jack", 7000, 25, "male", "Washington"));

personList.add(new Person("Lily", 7800, 21, "female", "Washington"));

personList.add(new Person("Anni", 8200, 24, "female", "New York"));

Map, Person> map = personList.stream().filter(p -> p.getSalary() > 8000)

.collect(Collectors.toMap(Person::getName, p -> p));

System.out.println("toList:" + listNew);

System.out.println("toSet:" + set);

System.out.println("toMap:" + map);

}

}

運行結果:

toList:[6, 4, 6, 6, 20]

toSet:[4, 20, 6]

toMap:{Tom=mutest.Person@5fd0d5ae, Anni=mutest.Person@2d98a335}

3.6.2 統計(count/averaging)

Collectors提供了一系列用于數據統計的靜態方法:

計數:count

平均值:averagingInt、averagingLong、averagingDouble

最值:maxBy、minBy

求和:summingInt、summingLong、summingDouble

統計以上所有:summarizingInt、summarizingLong、summarizingDouble

案例:統計員工人數、平均工資、工資總額、最高工資。

public class StreamTest {

public static void main(String[] args) {

List personList = new ArrayList();

personList.add(new Person("Tom", 8900, 23, "male", "New York"));

personList.add(new Person("Jack", 7000, 25, "male", "Washington"));

personList.add(new Person("Lily", 7800, 21, "female", "Washington"));

// 求總數

Long count = personList.stream().collect(Collectors.counting());

// 求平均工資

Double average = personList.stream().collect(Collectors.averagingDouble(Person::getSalary));

// 求最高工資

Optional max = personList.stream().map(Person::getSalary).collect(Collectors.maxBy(Integer::compare));

// 求工資之和

Integer sum = personList.stream().collect(Collectors.summingInt(Person::getSalary));

// 一次性統計所有信息

DoubleSummaryStatistics collect = personList.stream().collect(Collectors.summarizingDouble(Person::getSalary));

System.out.println("員工總數:" + count);

System.out.println("員工平均工資:" + average);

System.out.println("員工工資總和:" + sum);

System.out.println("員工工資所有統計:" + collect);

}

}

運行結果:

員工總數:3

員工平均工資:7900.0

員工工資總和:23700

員工工資所有統計:DoubleSummaryStatistics{count=3, sum=23700.000000,min=7000.000000, average=7900.000000, max=8900.000000}

3.6.3 分組(partitioningBy/groupingBy)

分區:將stream按條件分為兩個Map,比如員工按薪資是否高于8000分為兩部分。

分組:將集合分為多個Map,比如員工按性別分組。有單級分組和多級分組。

案例:將員工按薪資是否高于8000分為兩部分;將員工按性別和地區分組

public class StreamTest {

public static void main(String[] args) {

List personList = new ArrayList();

personList.add(new Person("Tom", 8900, "male", "New York"));

personList.add(new Person("Jack", 7000, "male", "Washington"));

personList.add(new Person("Lily", 7800, "female", "Washington"));

personList.add(new Person("Anni", 8200, "female", "New York"));

personList.add(new Person("Owen", 9500, "male", "New York"));

personList.add(new Person("Alisa", 7900, "female", "New York"));

// 將員工按薪資是否高于8000分組

Map> part = personList.stream().collect(Collectors.partitioningBy(x -> x.getSalary() > 8000));

// 將員工按性別分組

Map> group = personList.stream().collect(Collectors.groupingBy(Person::getSex));

// 將員工先按性別分組,再按地區分組

Map>> group2 = personList.stream().collect(Collectors.groupingBy(Person::getSex, Collectors.groupingBy(Person::getArea)));

System.out.println("員工按薪資是否大于8000分組情況:" + part);

System.out.println("員工按性別分組情況:" + group);

System.out.println("員工按性別、地區:" + group2);

}

}

輸出結果:

員工按薪資是否大于8000分組情況:{false=[mutest.Person@2d98a335, mutest.Person@16b98e56, mutest.Person@7ef20235], true=[mutest.Person@27d6c5e0, mutest.Person@4f3f5b24, mutest.Person@15aeb7ab]}

員工按性別分組情況:{female=[mutest.Person@16b98e56, mutest.Person@4f3f5b24, mutest.Person@7ef20235], male=[mutest.Person@27d6c5e0, mutest.Person@2d98a335, mutest.Person@15aeb7ab]}

員工按性別、地區:{female={New York=[mutest.Person@4f3f5b24, mutest.Person@7ef20235], Washington=[mutest.Person@16b98e56]}, male={New York=[mutest.Person@27d6c5e0, mutest.Person@15aeb7ab], Washington=[mutest.Person@2d98a335]}}

3.6.4 接合(joining)

joining可以將stream中的元素用特定的連接符(沒有的話,則直接連接)連接成一個字符串。

public class StreamTest {

public static void main(String[] args) {

List personList = new ArrayList();

personList.add(new Person("Tom", 8900, 23, "male", "New York"));

personList.add(new Person("Jack", 7000, 25, "male", "Washington"));

personList.add(new Person("Lily", 7800, 21, "female", "Washington"));

String names = personList.stream().map(p -> p.getName()).collect(Collectors.joining(","));

System.out.println("所有員工的姓名:" + names);

List list = Arrays.asList("A", "B", "C");

String string = list.stream().collect(Collectors.joining("-"));

System.out.println("拼接后的字符串:" + string);

}

}

運行結果:

所有員工的姓名:Tom,Jack,Lily

拼接后的字符串:A-B-C

3.6.5 歸約(reducing)

Collectors類提供的reducing方法,相比于stream本身的reduce方法,增加了對自定義歸約的支持。

public class StreamTest {

public static void main(String[] args) {

List personList = new ArrayList();

personList.add(new Person("Tom", 8900, 23, "male", "New York"));

personList.add(new Person("Jack", 7000, 25, "male", "Washington"));

personList.add(new Person("Lily", 7800, 21, "female", "Washington"));

// 每個員工減去起征點后的薪資之和(這個例子并不嚴謹,但一時沒想到好的例子)

Integer sum = personList.stream().collect(Collectors.reducing(0, Person::getSalary, (i, j) -> (i + j - 5000)));

System.out.println("員工扣稅薪資總和:" + sum);

// stream的reduce

Optional sum2 = personList.stream().map(Person::getSalary).reduce(Integer::sum);

System.out.println("員工薪資總和:" + sum2.get());

}

}

運行結果:

員工扣稅薪資總和:8700

員工薪資總和:23700

3.7 排序(sorted)

sorted,中間操作。有兩種排序:

sorted():自然排序,流中元素需實現Comparable接口

sorted(Comparator com):Comparator排序器自定義排序

案例:將員工按工資由高到低(工資一樣則按年齡由大到小)排序

public class StreamTest {

public static void main(String[] args) {

List personList = new ArrayList();

personList.add(new Person("Sherry", 9000, 24, "female", "New York"));

personList.add(new Person("Tom", 8900, 22, "male", "Washington"));

personList.add(new Person("Jack", 9000, 25, "male", "Washington"));

personList.add(new Person("Lily", 8800, 26, "male", "New York"));

personList.add(new Person("Alisa", 9000, 26, "female", "New York"));

// 按工資升序排序(自然排序)

List newList = personList.stream().sorted(Comparator.comparing(Person::getSalary)).map(Person::getName)

.collect(Collectors.toList());

// 按工資倒序排序

List newList2 = personList.stream().sorted(Comparator.comparing(Person::getSalary).reversed())

.map(Person::getName).collect(Collectors.toList());

// 先按工資再按年齡升序排序

List newList3 = personList.stream()

.sorted(Comparator.comparing(Person::getSalary).thenComparing(Person::getAge)).map(Person::getName)

.collect(Collectors.toList());

// 先按工資再按年齡自定義排序(降序)

List newList4 = personList.stream().sorted((p1, p2) -> {

if (p1.getSalary() == p2.getSalary()) {

return p2.getAge() - p1.getAge();

} else {

return p2.getSalary() - p1.getSalary();

}

}).map(Person::getName).collect(Collectors.toList());

System.out.println("按工資升序排序:" + newList);

System.out.println("按工資降序排序:" + newList2);

System.out.println("先按工資再按年齡升序排序:" + newList3);

System.out.println("先按工資再按年齡自定義降序排序:" + newList4);

}

}

運行結果:

按工資自然排序:[Lily, Tom, Sherry, Jack, Alisa]

按工資降序排序:[Sherry, Jack, Alisa,Tom, Lily]

先按工資再按年齡自然排序:[Sherry, Jack, Alisa, Tom, Lily]

先按工資再按年齡自定義降序排序:[Alisa, Jack, Sherry, Tom, Lily]

3.8 提取/組合

流也可以進行合并、去重、限制、跳過等操作。

public class StreamTest {

public static void main(String[] args) {

String[] arr1 = { "a", "b", "c", "d" };

String[] arr2 = { "d", "e", "f", "g" };

Stream stream1 = Stream.of(arr1);

Stream stream2 = Stream.of(arr2);

// concat:合并兩個流 distinct:去重

List newList = Stream.concat(stream1, stream2).distinct().collect(Collectors.toList());

// limit:限制從流中獲得前n個數據

List collect = Stream.iterate(1, x -> x + 2).limit(10).collect(Collectors.toList());

// skip:跳過前n個數據

List collect2 = Stream.iterate(1, x -> x + 2).skip(1).limit(5).collect(Collectors.toList());

System.out.println("流合并:" + newList);

System.out.println("limit:" + collect);

System.out.println("skip:" + collect2);

}

}

運行結果:

流合并:[a, b, c, d, e, f, g]

limit:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

skip:[3, 5, 7, 9, 11]

4 Stream源碼解讀

這部分等有時間慢慢分解吧。

好,以上就是全部內容,能堅持看到這里,你一定很有收獲,那么動一動拿offer的小手,點個贊再走吧。

總結

以上是生活随笔為你收集整理的stream 过滤俩个字段_Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合...的全部內容,希望文章能夠幫你解決所遇到的問題。

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

av看片在线观看 | 欧美激情综合五月色丁香 | 精品一区电影 | 亚洲综合在线观看视频 | 国色天香在线 | 国产99精品在线观看 | 天天做日日爱夜夜爽 | 天天色天天骑天天射 | 夜夜夜草 | 日本深夜福利视频 | 久久综合给合久久狠狠色 | 啪啪免费观看网站 | 日韩电影中文,亚洲精品乱码 | 97天堂网 | 中文字幕在线资源 | 黄色一级大片在线免费看产 | 玖玖视频网 | 日本精品午夜 | 国产在线自| 激情五月综合网 | 激情婷婷色| 中文字幕一二三区 | 国产美女免费视频 | av丝袜天堂| 亚州国产精品视频 | 黄色片亚洲 | 偷拍福利视频一区二区三区 | 午夜国产福利视频 | 天天操天天爱天天爽 | bbb搡bbb爽爽爽 | 九九99视频 | 天天操人人要 | 日韩精品免费一区二区 | 国产乱码精品一区二区三区介绍 | 精品国产亚洲在线 | 在线视频福利 | 色美女在线 | 一区二区三区精品在线 | 五月婷婷激情综合 | 色a综合| 国产激情免费 | 日日草天天草 | 久久久高清一区二区三区 | 在线观看中文字幕一区二区 | www99精品| 免费看国产视频 | 久草国产在线 | 国产精品久久久久久久午夜片 | 99在线热播精品免费 | 超碰免费观看 | 欧美日韩国产精品一区二区亚洲 | 久久国产精品久久精品 | 国产精品一区二区三区免费视频 | 久久精品久久99 | 天天干天天操天天射 | 在线观看视频97 | 激情一区二区三区欧美 | 国产成人精品一区二区三区免费 | 亚洲精品成人免费 | 高清中文字幕av | 超碰人人做 | 日韩有码第一页 | 粉嫩av一区二区三区四区五区 | 91传媒在线看 | 91av蜜桃 | 成人黄色大片 | 成人免费ⅴa | 国产99久久 | 91av播放| 日韩精品无码一区二区三区 | 色爱区综合激月婷婷 | 国产日韩欧美在线观看视频 | 中文字幕在线观看第一区 | 男女男视频 | 亚洲精品玖玖玖av在线看 | 天天爽综合网 | www.色com| 久久6精品 | 日日射天天射 | 91在线中字 | 国产中文字幕在线观看 | av在线免费观看不卡 | 国产1区在线 | 国产一区二区三区免费在线 | 国产精品第三页 | 精品九九久久 | 亚洲午夜精品在线观看 | 少妇资源站 | 亚洲成人家庭影院 | 亚洲成av人片在线观看无 | 欧美日韩免费在线观看视频 | 久久人人爽人人爽 | 天堂网一区 | 免费在线观看一区 | av中文字幕免费在线观看 | h久久| 成人国产精品一区二区 | 免费成人黄色av | 日韩免费小视频 | 99久久激情| 日本公妇色中文字幕 | 中文一区在线 | 久久国产精品偷 | 国产成人免费在线 | 国产精品美女久久久久久久 | 国产视频2区 | 国产精品不卡在线 | 五月激情姐姐 | 久久久久久久99精品免费观看 | 久艹视频在线观看 | 爱爱av在线| 日本精品久久久一区二区三区 | 日日夜夜精品免费视频 | 成人av影视在线 | 亚洲精品在线观看不卡 | 丁香色婷婷 | 久久国产乱| av免费观看网址 | 99在线播放 | 午夜黄网 | 亚洲精品久久久久中文字幕m男 | 免费麻豆视频 | 日日干天天射 | 婷婷丁香久久五月婷婷 | 国产精品欧美一区二区三区不卡 | 一区二区影视 | 特级毛片在线观看 | 蜜臀av.com | 免费视频一二三 | 免费av大全| 在线免费视频一区 | 日韩视频免费 | 亚洲国产精品推荐 | 国产网红在线 | 亚洲欧美日韩一二三区 | a天堂最新版中文在线地址 久久99久久精品国产 | 欧美性脚交 | 2023av在线| www国产亚洲精品久久麻豆 | 中文在线字幕免 | 久草观看视频 | 亚洲国产精品人久久电影 | 日韩精品一卡 | 亚洲精品国产精品乱码不99热 | 国产在线精品国自产拍影院 | 91网页版免费观看 | 91av视频导航| 一区二区三区在线看 | 日本精品小视频 | 99草在线视频| 国产免费高清 | 婷婷久月| 欧美日韩亚洲第一页 | 免费久久久| 在线国产视频一区 | 最近中文字幕高清字幕免费mv | 成人在线免费观看视视频 | 你操综合 | 日韩精品欧美精品 | 在线一二三四区 | 夜夜高潮夜夜爽国产伦精品 | 91免费视频网站在线观看 | 久久精品99久久久久久2456 | 在线免费观看视频一区 | 国产福利精品一区二区 | 人人爽人人澡人人添人人人人 | 中文字幕在线观看1 | 黄色毛片网站在线观看 | 国内精品久久久久影院优 | 成人资源网 | 午夜aaaa | 久久精品99国产精品日本 | 日韩美女黄色片 | 91大神精品视频在线观看 | 91av99| 91精品国产99久久久久 | 欧美视频国产视频 | 一本一本久久a久久精品综合妖精 | 在线视频欧美亚洲 | 在线观看免费一区 | 免费网站污 | 大片网站久久 | 亚洲天天在线 | 中文字幕亚洲在线观看 | 亚洲欧美婷婷六月色综合 | 久久国产精品精品国产色婷婷 | av日韩不卡| 在线看av网址| 成年人在线免费看视频 | a级片在线播放 | 欧美性黑人 | 国产精品国产三级国产不产一地 | 久久久精品欧美一区二区免费 | 98超碰在线 | 亚洲精品乱码久久久久v最新版 | 久久小视频 | 久久高清国产 | 日韩高清观看 | 国产视频一级 | 久久久久夜色 | 婷婷伊人五月天 | 最新黄色av网址 | 色综合久久综合中文综合网 | 久久免费片 | 国产麻豆精品免费视频 | 国产免费成人av | 欧美另类性 | 日韩欧美视频 | 色福利网站| 欧美日韩国产xxx | 精品免费一区 | 色天天 | 在线视频91 | av色图天堂网 | 国产精品久久久久久久久久99 | 丁香九月婷婷 | 狠狠搞,com | 久草在线国产 | 国产精品一区二区三区免费视频 | 98超碰人人 | 狠狠色狠狠色合久久伊人 | 九九久久视频 | 手机色在线 | 成人免费观看网站 | 狠狠色伊人亚洲综合网站色 | 国产中文字幕在线视频 | 国产一区视频在线观看免费 | 最近的中文字幕大全免费版 | 久久99久久99精品中文字幕 | 国产v欧美 | 在线观看av片| 又色又爽又黄 | 日韩在线播放欧美字幕 | 久插视频| 国产成人无码AⅤ片在线观 日韩av不卡在线 | 天天天天天天干 | 看黄色.com| 99免费在线播放99久久免费 | 亚洲欧美国产精品va在线观看 | 欧美激情h | 狠狠色丁香婷婷综合欧美 | 国产69精品久久99不卡的观看体验 | 国产一区视频在线观看免费 | 久草在线资源网 | 久久婷婷开心 | av免费网页 | 91在线你懂的 | 福利视频一区二区 | 日韩免费三区 | 成人av片免费观看app下载 | www.久久久.cum| 精品久久久久_ | 国产成人亚洲在线观看 | 欧美亚洲成人xxx | 婷婷成人在线 | 日韩专区一区二区 | 欧美一级免费在线 | 99视频国产在线 | 91女子私密保健养生少妇 | 成人在线你懂得 | 免费成人av在线看 | 日日添夜夜添 | 三三级黄色片之日韩 | 一级精品视频在线观看宜春院 | 精品一区二区电影 | 精品亚洲视频在线观看 | 国产亚洲激情视频在线 | 日本在线视频网址 | 国产精品丝袜久久久久久久不卡 | 免费在线观看一区 | 国产美女精品在线 | 国产一区二区在线免费视频 | 国产 日韩 欧美 在线 | 国产伦理剧 | 成人av影视在线 | 日韩在线色视频 | 国产精品theporn | 香蕉网站在线观看 | 视频国产一区二区三区 | 日韩欧美网站 | 日日干夜夜草 | 亚洲va韩国va欧美va精四季 | 国产视频2 | 亚洲精品字幕在线 | 成人一区影院 | 亚洲精品国产精品国自产观看浪潮 | 精品一区av | 日韩精品中文字幕在线 | 欧美有色 | 中文字幕在线影视资源 | 精品视频亚洲 | 成人在线视频免费 | 国产原创在线 | 国产一区91 | 免费在线观看国产精品 | 黄色美女免费网站 | 天天av在线播放 | 国产成人精品一区二区三区福利 | 91精品啪啪 | 久久99精品一区二区三区三区 | 久草视频一区 | 国产精品综合久久 | av高清影院| 国产探花| 人人插人人草 | 成人香蕉视频 | 精品亚洲国产视频 | 五月婷婷黄色网 | 天天拍夜夜拍 | 又黄又爽又刺激 | www.天天操.com | 国产91成人在在线播放 | 韩国一区二区三区视频 | 天天天天综合 | 日韩一区二区免费视频 | 亚洲成人午夜在线 | 天天做天天爱天天综合网 | 久草在线最新 | 精品欧美一区二区在线观看 | 日本三级在线观看中文字 | 亚洲免费色 | 日操操 | 麻豆视频在线看 | 久久久久国产一区二区三区四区 | 免费a v观看 | 国产成人福利在线观看 | 国产精品女人网站 | 国产精品区在线观看 | 国产黄色特级片 | 九九日九九操 | 久久久黄色免费网站 | 91色网址 | 亚洲黄色av网址 | 欧美精品三级 | 精品视频网站 | 色99视频| 在线小视频国产 | 美女久久久 | 999国产| 色婷婷综合久久久 | 69视频国产| 国产黄色高清 | av在线最新 | 在线观看一区二区视频 | 成人小电影在线看 | 亚洲国产精品成人va在线观看 | 亚洲黄色激情小说 | 亚洲精品网站在线 | 最新国产在线观看 | 91成人在线免费观看 | 亚洲高清视频在线 | 婷婷在线综合 | 在线观看中文字幕 | 久久综合五月天 | 91麻豆精品久久久久久 | av 在线观看| 国产一区在线观看免费 | 天天干夜夜夜 | 欧美婷婷色 | 91在线中字 | 国产精品精品久久久 | 久久综合婷婷国产二区高清 | 区一区二区三区中文字幕 | 成人av免费在线观看 | 天天插天天干天天操 | 麻豆视频免费在线观看 | 91九色视频在线 | av高清在线 | 欧美一二区视频 | 国产福利精品在线观看 | 国产亚洲视频在线免费观看 | 国产日产精品一区二区三区四区 | 中文字幕丝袜一区二区 | 国产不卡精品 | 夜夜爽88888免费视频4848 | 国产一线天在线观看 | 成人a级网站 | japanese黑人亚洲人4k | 99综合视频 | 国产精品视频 | 91精品久久久久久久久 | 久操视频在线 | 亚洲四虎在线 | 国产不卡免费av | 日韩a在线| 激情网站免费观看 | 一区二区欧美日韩 | a午夜在线 | 欧美日韩有码 | 亚洲小视频在线观看 | 91av视频网站| 丁香视频在线观看 | av资源免费看 | 日韩视频在线一区 | 亚洲精品乱码久久久久久按摩 | 色妞色视频一区二区三区四区 | 美女精品在线 | 91av欧美| a电影免费看 | 天天操天天怕 | 国产一级片毛片 | 久久精品亚洲国产 | 伊人激情网| 精品国产一区二区三区久久久蜜臀 | 久久精品国产亚洲精品2020 | 日本高清xxxx | 国产一级免费在线观看 | 成年人黄色av | 久久99久久99精品免观看粉嫩 | 国产一级精品绿帽视频 | 人人躁| 免费成人在线视频网站 | 国产高清在线观看 | 久久99在线视频 | 久久综合九色欧美综合狠狠 | 在线观看91| 日韩com | 国际精品久久久 | 成人久久精品 | 成人99免费视频 | 右手影院亚洲欧美 | 成人免费视频播放 | 九九精品无码 | 国产精品乱码久久久 | 亚洲手机av | 六月婷婷网 | 免费在线观看黄 | 国产视频日韩视频欧美视频 | 狠狠狠色丁香综合久久天下网 | 免费看一级特黄a大片 | 成人黄在线观看 | 在线免费色 | 日日爱网址 | 天天爽夜夜爽人人爽曰av | 五月天久久久久久 | 久久久国产成人 | 性色va | 99久久精品国产一区二区三区 | 久久人人爽人人爽人人片av免费 | 亚洲国产av精品毛片鲁大师 | 久久精品日产第一区二区三区乱码 | 麻豆av一区二区三区在线观看 | 99视频偷窥在线精品国自产拍 | 97电影在线 | 日韩黄色一级电影 | 亚洲欧美日韩精品久久奇米一区 | 欧美日韩一区二区在线观看 | 国产精品99久久久久久武松影视 | 亚洲资源| 91看片淫黄大片91 | 在线天堂亚洲 | 在线视频中文字幕一区 | 美女视频黄色免费 | 久久综合色一综合色88 | 91在线最新 | 99热9 | 特及黄色片 | 91人人爽久久涩噜噜噜 | 亚洲精品视频在线免费 | 日本精品中文字幕在线观看 | 久久精品视频在线看 | 免费在线一区二区三区 | 99视频久久 | 国产精品久久久久久久免费大片 | 亚洲91在线 | 91精品国产网站 | 亚洲精品免费观看视频 | 日韩欧美一区二区三区视频 | 成人一区二区三区在线 | 国产精品久久久电影 | 成人精品99 | 久产久精国产品 | 国产精品久久久久永久免费 | www.亚洲黄| 久久看片网 | 一区二区 精品 | 96av在线| 亚洲天堂网在线播放 | 亚洲综合在线发布 | 在线观看精品一区 | 国产亚洲精品久久久久久久久久久久 | 国产精品理论在线观看 | 免费国产视频 | 亚洲视频免费视频 | 国产第一页福利影院 | 13日本xxxxxⅹxxx20 | 人人爱爱 | 国产日韩亚洲 | 一级片免费视频 | 美女在线国产 | 不卡中文字幕av | 97成人精品区在线播放 | 99精品久久精品一区二区 | 99久久精品一区二区成人 | 亚洲涩涩网 | 亚洲天天摸日日摸天天欢 | 在线成人免费av | 一级国产视频 | 中文字幕综合在线 | 操操日 | 九精品 | 888av| 亚洲免费成人 | a视频免费看 | 免费观看一级一片 | 在线观看国产v片 | 狠狠色丁香婷婷综合最新地址 | av一区二区三区在线 | 一区二区三区在线观看免费 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 999久久久久 | 久久国产亚洲精品 | 精品久久久久久久久久岛国gif | 欧美最爽乱淫视频播放 | 国产自产高清不卡 | 亚洲黄色免费在线 | 日韩欧美在线视频一区二区 | 激情网第四色 | 久久综合狠狠综合 | 国产一区二区在线免费观看 | 欧美伦理电影一区二区 | 亚洲午夜大片 | 天天干天天干天天 | 国产手机在线观看 | 超碰97在线人人 | 伊人天堂av| 国产破处在线视频 | 2021国产精品视频 | 免费观看午夜视频 | 波多野结衣最新 | 欧美午夜性生活 | 亚洲精品网页 | 国内精品久久久久影院日本资源 | 97超碰在线久草超碰在线观看 | 夜夜爱av| 色干干| 久久亚洲综合国产精品99麻豆的功能介绍 | 久久成人综合视频 | 免费看片成人 | 亚洲精品66 | 一区二区三区四区精品视频 | а天堂中文最新一区二区三区 | 成人91免费视频 | 国内精品久久久久 | 免费看短 | 涩涩网站免费 | 午夜精品福利影院 | 亚洲91中文字幕无线码三区 | 丁香av在线| 日韩亚洲在线视频 | 久久线视频 | 国产色在线,com | 不卡的av在线播放 | 亚洲va在线va天堂 | 国产精品video爽爽爽爽 | 亚洲成人资源在线观看 | 91视频91色 | 国产精品久久99 | 美女视频一区 | 毛片无卡免费无播放器 | 日韩高清国产精品 | 色综合久久悠悠 | 99日精品 | 91系列在线 | 在线观看中文字幕av | 在线免费观看黄色 | 精品福利网站 | 国产在线高清视频 | 激情婷婷| 日本久久影视 | 国产福利91精品一区二区三区 | 午夜精品一区二区三区免费 | 97视频人人澡人人爽 | 狠狠操精品 | 精品美女国产在线 | 国产精品色视频 | 91精品国自产在线观看欧美 | 国产精品免费一区二区三区在线观看 | av色综合网 | 午夜久久网站 | 在线观看av中文字幕 | 国产又粗又猛又色又黄网站 | 中文在线字幕免 | 99热在线观看免费 | 欧美一级久久久久 | 久爱精品在线 | 国产一区二区三区免费视频 | 91精品国产欧美一区二区 | 天天综合网国产 | 人人舔人人 | 特级黄色电影 | 欧美污网站 | 国产亚洲免费的视频看 | 天堂在线v | 91成年人在线观看 | 91麻豆精品国产自产 | 亚洲 中文 欧美 日韩vr 在线 | 国产精品久久久久久久久久久久久 | 在线观看中文字幕亚洲 | 国产精品一区二区久久久 | 波多野结衣在线视频一区 | 久草免费资源 | 亚洲激情综合 | 色香蕉在线视频 | 欧美了一区在线观看 | 草久久久久 | 久久久久色 | 色射色| 国产视频一区在线免费观看 | 亚洲精品综合在线观看 | 亚洲精品88欧美一区二区 | 中文字幕欧美日韩va免费视频 | 亚洲视频 一区 | 一区二区三区免费播放 | 成人avav| 99在线免费观看视频 | 国产精品久久久久久久久久ktv | 日韩精品欧美视频 | 日日爽视频 | 天天爱天天操天天爽 | 久草网在线 | 免费色视频网址 | 欧美电影在线观看 | 精品国产_亚洲人成在线 | 欧美日韩国产网站 | 91久久精品日日躁夜夜躁国产 | 日韩毛片在线一区二区毛片 | 人人澡澡人人 | 婷婷色六月天 | 麻豆国产精品va在线观看不卡 | 国产精品第一页在线 | 91传媒激情理伦片 | 国产香蕉视频在线播放 | 菠萝菠萝蜜在线播放 | 久九视频 | 国产精品久久久毛片 | 亚洲精品视频网 | 久久av福利 | 在线观看香蕉视频 | 国产精品自产拍 | 黄色大片日本 | 国产午夜亚洲精品 | 亚洲国产精品久久 | 欧美日韩在线观看不卡 | 国产欧美在线一区二区三区 | 超碰人人草人人 | www.亚洲视频.com | 99热亚洲精品 | 久久视频99 | www好男人| 成人黄色影片在线 | 在线一区观看 | 久久成人在线 | 久久免费在线观看视频 | 精品视频在线免费观看 | 97精品国产97久久久久久 | 国产五月 | 国产精品视频免费看 | 中文在线天堂资源 | 亚洲欧美成人综合 | 伊人在线视频 | 欧美成人视 | 欧美日韩在线观看不卡 | 超碰97中文| 久久人人精 | 国产精品精品国产婷婷这里av | 亚洲视频,欧洲视频 | 亚洲精品视频观看 | 国产成人三级三级三级97 | 国产精品 国产精品 | 一级国产视频 | 天天综合网入口 | 免费a视频在线观看 | 免费在线播放黄色 | 国产特级毛片 | 欧美精品九九99久久 | 久久情侣偷拍 | 在线高清av | 欧美日韩一区二区在线观看 | 久久这里只精品 | 日本美女xx| 在线观看亚洲精品视频 | 波多野结衣久久资源 | 国产精品久久久久永久免费看 | 久久国产精品久久国产精品 | 中文字幕在线观看一区二区 | 免费激情在线电影 | 中文字幕精品一区久久久久 | 中文字幕观看av | 色婷婷久久久综合中文字幕 | 久久久久久美女 | 91久久影院| 日韩在线观看网站 | 草久在线播放 | 精品国产精品久久一区免费式 | 国产在线观看91 | 久久久久中文字幕 | 国产.精品.日韩.另类.中文.在线.播放 | 麻豆视频网址 | 91av原创| 精品免费国产一区二区三区四区 | 欧美日韩高清一区二区 国产亚洲免费看 | 日韩午夜在线 | 美女在线观看网站 | 久久成人综合视频 | 欧美日韩中文视频 | 欧美日韩中 | 美女网站色免费 | 国产中文字幕av | 色干综合| 亚洲人毛片 | 超碰在线日本 | 国产成人精品午夜在线播放 | 激情网站网址 | 色多多在线观看 | 日韩精品视频在线免费观看 | 激情综合五月天 | 久久久网址 | 亚洲精品久久久久久久蜜桃 | 色香蕉网| 亚洲高清视频在线观看免费 | 国产精品www | 成人免费视频网 | 久久国产手机看片 | 国产a级片免费观看 | 国产精品久久久久久久久软件 | 日韩av美女| 人人添人人澡人人澡人人人爽 | 免费成人在线网站 | 久久毛片网站 | 国产亚洲视频系列 | 日韩性久久 | 亚洲人天堂 | 天天综合色 | a级国产乱理论片在线观看 特级毛片在线观看 | 福利视频一二区 | 日韩在线| 免费网址在线播放 | av亚洲产国偷v产偷v自拍小说 | 日本丶国产丶欧美色综合 | 国产精品久久99综合免费观看尤物 | 亚洲 欧洲av | 日产乱码一二三区别免费 | 狠狠干我| 国产精品免费高清 | 欧美特一级片 | 手机看国产毛片 | 精品福利片 | 午夜精品福利在线 | 成人免费视频网站 | 日本高清中文字幕有码在线 | 96超碰在线 | 久热精品国产 | 欧美日韩免费观看一区=区三区 | 中文字幕免费在线看 | 91网站在线视频 | www黄在线| 国产精品女同一区二区三区久久夜 | 国产一区在线观看视频 | 国产精品麻豆欧美日韩ww | 日本韩国中文字幕 | 中文字幕国产一区二区 | 一区二区中文字幕在线播放 | 2020天天干夜夜爽 | 在线观看av麻豆 | 亚洲伊人av | 久久99精品久久只有精品 | 中文字幕丰满人伦在线 | 国产精品区二区三区日本 | 四虎永久精品在线 | 久久99精品久久久久久久久久久久 | 波多野结衣电影一区二区三区 | 亚洲专区在线播放 | 奇人奇案qvod | 亚洲国产精品va在线看黑人动漫 | 国产精品免费小视频 | 又黄又爽的免费高潮视频 | 国产精品美女久久久久久 | 国产黄色大全 | 午夜丁香视频在线观看 | av官网在线| 亚洲综合欧美激情 | 国产无限资源在线观看 | 国产成人精品av久久 | 最近最新mv字幕免费观看 | 91视频3p | 国产福利一区二区三区视频 | 成人在线观看资源 | 不卡av电影在线 | 国产电影黄色av | 91人人澡| 视频一区在线免费观看 | 人人添人人澡 | 91日韩在线专区 | 视频成人免费 | 一区二区三高清 | 亚洲精品99久久久久中文字幕 | 日韩在线免费高清视频 | 久久噜噜少妇网站 | 亚洲欧美日韩国产一区二区 | 国产精品福利一区 | 九九九热精品免费视频观看 | 黄色大片视频网站 | 国产96在线视频 | 久久毛片网 | 激情 亚洲| 精品久久久久久一区二区里番 | 特黄色大片 | 国产在线更新 | 国产一区视频免费在线观看 | 久久久高清免费视频 | 国产丝袜制服在线 | 国产亚洲精品久久久久动 | 久久精品国产v日韩v亚洲 | 精品在线播放视频 | 99精品在线看 | 草久视频在线 | 一区二区三区在线观看 | 久久人人爽人人人人片 | 天天干天天插伊人网 | 在线免费视频你懂的 | 婷婷综合导航 | 国产免费观看高清完整版 | 中文字幕人成乱码在线观看 | 久久午夜羞羞影院 | 园产精品久久久久久久7电影 | 天天操人 | 欧美一二三区在线播放 | 伊人午夜 | 亚洲精品国偷拍自产在线观看 | 久草国产视频 | 午夜久久福利影院 | 中文字幕影片免费在线观看 | 精品久久99 | 成人av资源网站 | 天天爱天天舔 | av电影在线观看完整版一区二区 | 国产一区二区手机在线观看 | 久久免费毛片 | 色综合久久99 | 97天堂| 精品国产伦一区二区三区观看方式 | 亚洲一区二区三区在线看 | 天天干,天天射,天天操,天天摸 | 嫩小bbbb摸bbb摸bbb | 国产精品麻豆91 | 久久久久99精品成人片三人毛片 | 国产一区久久 | 人人干人人添 | 久久系列 | 天海冀一区二区三区 | 久草免费色站 | 久久久999免费视频 日韩网站在线 | 成年人免费看片网站 | 精品福利国产 | 69国产盗摄一区二区三区五区 | 久久综合婷婷综合 | 精品免费一区 | 国产一区在线视频观看 | 免费看在线看www777 | 欧美aaa大片 | 午夜精品剧场 | 97在线观看视频免费 | 日本不卡123 | 在线观看日韩国产 | av一级在线 | 国产一级免费播放 | 国产精品去看片 | 欧美肥妇free | 中文字幕在线观看完整版电影 | 美女黄视频免费看 | 在线精品在线 | 麻豆视频在线观看免费 | 麻豆视频入口 | 安徽妇搡bbbb搡bbbb | 人人操日日干 | 成人精品国产免费网站 | 精品免费观看视频 | 91福利小视频 | 99日精品| www.国产毛片| 亚洲综合五月 | 国产中文自拍 | 午夜精品久久 | 久久激情久久 | 国产精品成人久久久 | 超碰在线97免费 | 日韩一区二区免费播放 | 国产精品久久久久久久久久久久 | 久久免费视频一区 | 人人添人人澡 | 中文字幕日韩无 | 亚洲精品国产精品久久99热 | 久久99精品久久久久久三级 | 高清av免费看 | 天天做天天爱天天爽综合网 | 91免费观看视频在线 | 操操操日日日 | 久久av观看 | 久久一区二区三区超碰国产精品 | 久久久亚洲精品 | 欧美成人日韩 | 99免费视频 | 国产91在线 | 美洲 | 久久少妇免费视频 | 91精品在线看 | 公开超碰在线 | a天堂在线看 | 色婷婷综合在线 | 久草观看视频 | 国产精品福利一区 | 91在线国内视频 | 国产日韩欧美在线 | 91精品久久久久 | 操操操日日 | 香蕉影视在线观看 | 欧美精品999| 中文字幕一区二区三区乱码不卡 | 五月婷婷综合激情网 | 在线视频观看你懂的 | 91手机在线看片 | 国产女人40精品一区毛片视频 | 91大神电影| 黄色亚洲精品 | 国产亚洲精品免费 | 亚洲成aⅴ人片久久青草影院 | 成人av资源在线 | 91中文字幕 | 精品国模一区二区 | 探花视频在线版播放免费观看 | 91免费日韩 | 国产精品中文久久久久久久 | 欧美久久电影 | 夜夜爽88888免费视频4848 | 午夜av在线免费 | 国产精品99久久久久久武松影视 | 天天操天天干天天 | 777奇米四色 | 亚洲作爱| 久久人人爽人人爽人人片av免费 | 天天色天天色天天色 | 国产一区免费在线 | 91大神一区二区三区 | 欧美一区二区三区免费观看 | 日韩av在线小说 | 一区 二区 精品 | 99精品视频免费在线观看 | 免费污片 | 婷婷在线色 | 成片视频在线观看 | 4hu视频| 欧美一级片免费 | 国产精品久久久久久久久久东京 | 亚洲精品美女在线观看播放 | 日韩中文字幕视频在线 | av在线播放一区二区三区 | 久久综合九色99 | 欧美福利久久 | 在线观看黄a| 国产探花 | 日本精品视频在线播放 | 亚洲午夜精品久久久久久久久久久久 | 国产欧美综合在线观看 | 激情综合亚洲精品 | 久久成人精品电影 | 狠狠色香婷婷久久亚洲精品 | 日日操网站 | 在线观看www视频 | 日韩av免费在线电影 | 综合色综合 | 狠狠88综合久久久久综合网 | 六月色婷 | 97超碰人人爱| japanesexxxxfreehd乱熟| 五月婷婷丁香在线观看 | 久草在线综合网 | 91久久国产综合精品女同国语 | 亚洲欧美日韩国产一区二区三区 | 日韩av一区二区三区在线观看 | 日b视频在线观看网址 | 日本黄色片一区二区 | 欧美在线观看视频一区二区三区 | 91成人精品观看 | 国产又粗又猛又爽又黄的视频免费 | 91爱爱电影 | 成人观看 | 色99之美女主播在线视频 | 国产香蕉97碰碰久久人人 | 美女搞黄国产视频网站 | 丁香午夜 | 国产成人久久久77777 | 色av网站 | 国产精品综合久久久 | 欧美激情综合五月色丁香 | 精品不卡av | 欧美日韩国内在线 | 久久av网 | 久久久国内精品 |