Matlab 2010a弱磁仿真失真根源:电压椭圆、离散化与SVPWM三重机制解析
2026/10/24 22:07:54
skip()和limit()方法dropWhile()和takeWhile()方法(Java 9引入)skip()与limit()—— 基于索引的流操作| 方法 | 作用 |
|---|---|
skip(n) | 跳过前n个元素 |
limit(n) | 保留前n个元素 |
这两个方法接收一个long参数,操作的是流中元素的顺序,适合用于分页、子集筛选等场景。
ints.stream().skip(2).limit(8)如果你想取第 3 个到第 8 个元素,这样写其实取的是第 3 到第 10 个元素(共 8 个),因为 limit 是在 skip 后的流上操作的!
List<Integer>ints=List.of(1,2,3,4,5,6,7,8,9);List<Integer>result=ints.stream().skip(2)// 跳过前 2 个(得到 3, 4, 5, 6, 7, 8, 9).limit(5)// 保留前 5 个(即 3 ~ 7).toList();System.out.println("result = "+result);result=[3,4,5,6,7]🧠 类比记忆:
就像拿书页一样:先撕掉前2页(skip),然后从当前页开始只保留前5页(limit)。
Java 9新特性:基于条件的筛选dropWhile(predicate)—— 丢弃直到不满足条件为止📌 一旦条件为假,从那一刻开始,所有元素都保留,不再判断。
List<Integer>nums=List.of(1,2,3,4,5,0,6);List<Integer>dropped=nums.stream().dropWhile(n->n<4).toList();System.out.println("dropWhile result = "+dropped);dropWhile result=[4,5,0,6]📌 说明:1、2、3被丢弃;从遇到4起(第一次不满足n < 4),后续元素全都保留。
takeWhile(predicate)—— 保留直到不满足条件为止📌 一旦条件为假,后续所有元素都将被丢弃,不会再次开启。
List<Integer>nums=List.of(1,2,3,4,1,0);List<Integer>taken=nums.stream().takeWhile(n->n<4).toList();System.out.println("takeWhile result = "+taken);takeWhile result=[1,2,3]📌 说明:当遇到4时条件不满足,后续的1和0都不再处理。
| 方法 | 行为 | 类比 |
|---|---|---|
dropWhile() | 丢弃直到条件不满足,门打开后一直开着 | 门开了就不关了 |
takeWhile() | 保留直到条件不满足,门关了就不再开 | 门关了就不开了 |
List<Integer>data=IntStream.range(1,1000).boxed().toList();List<Integer>result=data.stream().filter(n->n%2==0&&n>50).limit(10).toList();List<Integer>result=data.stream().takeWhile(n->n<100).toList();| 方法 | 类型 | 使用场景说明 |
|---|---|---|
skip(n) | 索引操作 | 跳过前 n 个 |
limit(n) | 索引操作 | 取前 n 个 |
dropWhile(p) | 条件操作 | 跳过直到遇到不满足条件的值 |
takeWhile(p) | 条件操作 | 保留直到遇到不满足条件的值 |