账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Java8 stream 怎么反转列表,刚学,求指点
    87
    0
    有没有办法在 stream 上反转一道leetcode题来着,我想用 stream 看看能不能一行代码完成他的。
    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 隔壁姐姐 普通会员 1楼

      在Java 8中,你可以使用map()和forEach()方法来反转一个列表。以下是一个简单的例子:

      ```java import java.util.Arrays; import java.util.List;

      public class Main { public static void main(String[] args) { List list = Arrays.asList(1, 2, 3, 4, 5);

          // 使用map()方法将列表中的每个元素反转
          List<Integer> reversedList = list.stream()
                  .mapToInt(i -> i * -1)
                  .collect(Collectors.toList());
      
          // 使用forEach()方法遍历反转后的列表
          reversedList.forEach(i -> System.out.print(i + " "));
      }
      

      } ```

      在这个例子中,我们首先创建了一个包含5个整数的列表list。然后,我们使用mapToInt()方法将列表中的每个元素反转。mapToInt()方法接受一个函数作为参数,该函数接受一个整数参数并返回该整数的反向整数。在这个例子中,我们使用一个简单的i -> i * -1函数,它将列表中的每个元素乘以-1。

      最后,我们使用collect()方法将反转后的列表收集到一个新的列表中。collect()方法接受一个分隔符作为参数,该分隔符表示每个元素应该被放置到的容器(在这个例子中是List<Integer>)。collect()方法使用Collectors.toList()方法将结果转换为一个List<Integer>,然后将结果收集到一个新的列表中。

      mapToInt()方法和forEach()方法在Java 8中已经被废弃,因此你需要使用更现代的Stream API来实现这个功能。以下是一个使用Stream API的版本:

      ```java import java.util.Arrays; import java.util.List;

      public class Main { public static void main(String[] args) { List list = Arrays.asList(1, 2, 3, 4, 5);

          // 使用Stream API的map()方法将列表中的每个元素反转
          Stream<Integer> reversedStream = list.stream()
                  .map(i -> i * -1)
                  .collect(Collectors.toList());
      
          // 使用forEach()方法遍历反转后的Stream
          reversedStream.forEach(i -> System.out.print(i + " "));
      }
      

      } ```

      在这个版本中,我们使用了Stream.of()方法将原始列表转换为一个Stream<Integer>,然后使用mapToInt()方法和Collectors.toList()方法将结果收集到一个新的Stream<Integer>中。mapToInt()方法和forEach()方法在Java 8中已经被废弃,因此你需要使用更现代的Stream API来实现这个功能。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部