创建流

要创建一个集合的流很简单,只需要在该集合的后面接上.stream()即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
* @author LeDao
* @company
* @create 2021-11-22 20:43
*/
public class Test {

public static void main(String[] args) {

List<String> stringList = Arrays.asList("atn", "tom", "bob", "alex", "leo");
Stream<String> stringStream = stringList.stream();
}
}

filter过滤

通过filter方法可以选出符合条件的元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Arrays;
import java.util.List;

/**
* @author LeDao
* @company
* @create 2021-11-22 20:43
*/
public class Test {

public static void main(String[] args) {

List<String> stringList = Arrays.asList("atn", "tom", "bob", "alex", "leo");
//选出以"al"开头的元素
stringList.stream().filter(s -> s.startsWith("al")).forEach(System.out::println);
}
}

map处理元素

通过map方法可以对元素进行一些处理,下面的代码将所有字符串都转换成大写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

/**
* @author LeDao
* @company
* @create 2021-11-22 20:43
*/
public class Test {

public static void main(String[] args) {

List<String> stringList = Arrays.asList("atn", "tom", "bob", "alex", "leo");
//将集合的所有字符串元素转换成大写
stringList.stream().map((Function<String, Object>) String::toUpperCase).forEach(System.out::println);
}
}

获取指定数量元素

通过limit方法可以获取指定数量的元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

/**
* @author LeDao
* @company
* @create 2021-11-22 20:43
*/
public class Test {

public static void main(String[] args) {

List<String> stringList = Arrays.asList("atn", "tom", "bob", "alex", "leo");
//只取前3个元素
stringList.stream().limit(3).forEach(System.out::println);
}
}

跳过指定下标前元素

通过skip方法可以跳过指定下标前面的元素,即:将指定下标前面的元素删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

/**
* @author LeDao
* @company
* @create 2021-11-22 20:43
*/
public class Test {

public static void main(String[] args) {

List<String> stringList = Arrays.asList("atn", "tom", "bob", "alex", "leo");
//跳过下标2前的元素,也就是下标0,1两个元素
stringList.stream().skip(2).forEach(System.out::println);
}
}

计算元素个数

使用count方法计算元素的个数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Arrays;
import java.util.List;

/**
* @author LeDao
* @company
* @create 2021-11-22 20:43
*/
public class Test {

public static void main(String[] args) {

List<String> stringList = Arrays.asList("atn", "tom", "bob", "alex", "leo");
//选出以"al"开头的元素并计算元素的个数
Long count=stringList.stream().filter(s -> s.startsWith("al")).count();
System.out.println(count);
}
}

排序

通过sorted方法可以对集合进行排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

/**
* @author LeDao
* @company
* @create 2021-11-22 20:43
*/
public class Test {

public static void main(String[] args) {

List<String> stringList = Arrays.asList("atn", "tom", "bob", "alex", "leo");
//将所有元素升序排序
stringList.stream().sorted(String::compareTo).forEach(System.out::println);
}
}

生成新集合

通过collect方法可以生成一个新的集合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
* @author LeDao
* @company
* @create 2021-11-22 20:43
*/
public class Test {

public static void main(String[] args) {

List<String> stringList = Arrays.asList("atn", "tom", "bob", "alex", "leo");
//将所有元素升序排序后生成一个新的集合
List<String> resultList = stringList.stream().sorted(String::compareTo).collect(Collectors.toList());
resultList.forEach(System.out::println);
}
}

生成Object数组

通过toArray方法生成Object数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
* @author LeDao
* @company
* @create 2021-11-22 20:43
*/
public class Test {

public static void main(String[] args) {

List<String> stringList = Arrays.asList("atn", "tom", "bob", "alex", "leo");
//将所有元素升序排序后生成数组
Object[] strings = stringList.stream().sorted(String::compareTo).toArray();
System.out.println(Arrays.toString(strings));
}
}