Bohr-L Bohr-L
首页
技术
常见面试题
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

刘博

I'm a slow walker, But I never walk backwards.
首页
技术
常见面试题
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 数据处理与存储类

  • Spring 生态类

  • 缓存问题类

  • 多线程类

  • JVM 类

  • MySQL 类

  • Java 8 + 特性类

    • 使用 Java 8 的优点是什么?
    • 集合与流有何不同?
    • 什么是 Lambda 表达式?
    • 解释 Predicate 和 Consumer 函数式接口
    • peek () 方法在 Java 8 中的作用?
    • 什么是函数式接口?
    • 接口中的静态方法有什么作用?
    • skip (long) 和 limit (long) 的区别?
      • 抽象类和接口的异同?
      • overload 与 override 的区别?
      • HashMap 在 Java 8 中的变化?
      • HashMap、LinkedHashMap、Hashtable、ConcurrentHashMap 的区别?
      • Lambda 参数列表与箭头运算符的作用?
      • sleep () 和 wait () 的区别?
      • throw 与 throws 的区别?
      • final、finally、finalize 的区别?
      • Collection 与 Collections 的区别
      • ArrayList、LinkedList、Vector 的区别?
    • 其他技术类

    • 常见面试题
    • Java 8 + 特性类
    刘博
    2025-12-29
    目录

    skip (long) 和 limit (long) 的区别?

    skip(long)和limit(long)是 Java 8 Stream API 中的中间操作,均用于 “控制流中元素的数量”,但核心逻辑相反:

    # 1. 核心定义与作用

    • skip(long n):跳过流中前n个元素,返回剩余元素组成的新流;若n大于流中元素总数,返回空流;
    • limit(long maxSize):截取流中前maxSize个元素,返回新流;若maxSize大于流中元素总数,返回原流。

    # 2. 关键区别

    对比维度 skip(long n) limit(long maxSize)
    核心操作 跳过前 n 个元素 截取前 maxSize 个元素
    对空流的处理 返回空流 返回空流
    参数超出范围(n/maxSize > 元素总数) 返回空流 返回原流
    执行顺序影响 若与 limit 连用,顺序不同结果不同(如skip(2).limit(2) vs limit(2).skip(2)) 同上

    # 3. 示例

    java

    运行

    List<Integer> list = Arrays.asList(1,2,3,4,5,6);
    
    // 1. skip(2):跳过前2个元素,返回[3,4,5,6]
    list.stream().skip(2).forEach(System.out::print); // 3456
    
    // 2. limit(3):截取前3个元素,返回[1,2,3]
    list.stream().limit(3).forEach(System.out::print); // 123
    
    // 3. 连用:skip(2).limit(2) → 跳过前2个,截取后续2个 → [3,4]
    list.stream().skip(2).limit(2).forEach(System.out::print); // 34
    
    // 4. 连用:limit(2).skip(2) → 截取前2个,再跳过2个 → 空流
    list.stream().limit(2).skip(2).forEach(System.out::print); // 无输出
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    # 4. 注意事项

    • 均为中间操作,惰性执行,需终端操作触发;
    • 对有序流(如 List 的流),按元素顺序处理;对无序流(如 Set 的流),处理结果无序;
    • 不适用于无限流(如Stream.generate(() -> 1)),limit可截取有限元素,skip会导致无限等待。

    #


    上次更新: 12/30/2025
    接口中的静态方法有什么作用?
    抽象类和接口的异同?

    ← 接口中的静态方法有什么作用? 抽象类和接口的异同?→

    最近更新
    01
    CPU 使用率较高排查和解决
    12-29
    02
    JVM OOM 问题如何排查和解决
    12-29
    03
    接口防刷怎么实现?
    12-29
    更多文章>
    Theme by Vdoing | Copyright © 2025-2026 Bohr-L's note
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式