Stream流处理数据好处:基于新的流,不会改变原始数据且可以链式调用多个方法
1、引用Stream流 基于java8
import java.util.stream.Collectors;
2.常见方法
toArray 将List列表转换为数组Array类型
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("apple", "banana", "orange", "mango"));
// 将 List 转换为数组
String[] array = list.stream().toArray(String[]::new);
}
Arrays.stream
方法结合collect
将Array转换为List
public static void main(String[] args) {
String[] array = {"apple", "banana", "orange", "mango"};
// 将数组转换为列表
List<String> list = Arrays.stream(array).collect(Collectors.toList());
}
3-1.常用的处理数据方法
1.allMatch、noneMatch、allMatch 用法相同,且不能连用
public class Main {
public static void main(String[] args) {
Test p1 = new Test(1, 10);
Test p2 = new Test(2, 12);
Test p3 = new Test(3, 14);
Test p4 = new Test(4, 12);
List<Test> list = Arrays.asList(p1, p2, p3, p4);
// 1.noneMatch: 没有任何匹配的
boolean noneMatchResult = list.stream().noneMatch(item -> item.getAge() < 0);
// 2.allMatch: 所有的都匹配
boolean noneMatchResult = list.stream().allMatch(item -> item.getAge() < 0);
// 3.anyMatch: 任何一个匹配即可
boolean noneMatchResult = list.stream().anyMatch(item -> item.getAge() < 0);
}
2.count、min、max 用法相同,且不能连用
public class Main {
public static void main(String[] args) {
Test p1 = new Test(1, 10);
Test p2 = new Test(2, 12);
Test p3 = new Test(3, 14);
Test p4 = new Test(4, 12);
List<Test> list = Arrays.asList(p1, p2, p3, p4);
// 1. count: 查出这组List的数量
long count = list.stream().count();
// 2. min: 某个最小的值
Test minAgePerson = list.stream().min((p1, p2) -> Integer.compare(p1.getAge(), p2.getAge())).orElse(null);
// 3. max: 某个最大的值
Test maxAgePerson = list.stream().max((p1, p2) -> Integer.compare(p1.getAge(), p2.getAge())).orElse(null);
}
3.findFirst、findAny 用法相同,且不能连用
public class Main {
public static void main(String[] args) {
Test p1 = new Test(1, 10);
Test p2 = new Test(2, 12);
Test p3 = new Test(3, 14);
Test p4 = new Test(4, 12);
List<Test> list = Arrays.asList(p1, p2, p3, p4);
// 1. findFirst: 找到第一个元素
Test firstPerson = list.stream().findFirst().orElse(null);
// 2. findAny: 找到任意一个元素
Test anyPerson = list.stream().findAny().orElse(null);
}
4. 常用的几种可以连用的方法
-
isPresent: 是否存在
- isEmpty:是否为空
- or 或者
- ifPresent: 有值之后处理
- ifpresentOrElse
- sorted 默认正序
- reversed 倒序
- limit(n) 截取前n个
- skip(n) 跳过前n个,返回一个新的流