java 使用 lamba 表达式处理二维数组
编写数学优化算法时遇到一个问题:如何将一个二维数组满足一定条件的行,筛选出来并组成一个新的数组。
传统思路:
编写一个专门的方法,这个方法返回满足条件的新数组,但数组必须首选确定满足条件的行数,有点麻烦。
或者使用 ArrayList, 使用 add 来添加满足条件的行,但最后还得把 ArrayList 转化成数组,也有点麻烦。
新思路:
使用 lambda 表达式,将二维数组转化成 stream, 使用 filter 过滤条件, 然后将过滤后的数组转化为二维数组。
举例:从一个二维数组中筛选出第四个元素大于5的行。
import java.util.Arrays;public class HelloWorld {public static void main(String[] args) {int[][] a = {{3, 6, 8, 10}, {4, 5, 6, 7}, {1, 2, 3, 4}}; // 筛选出第四个元素大于5的行 int[][] b = Arrays.stream(a).filter(p -> p[3] > 5).map(i -> Arrays.stream(i).toArray()).toArray(int[][] :: new);System.out.println(Arrays.deepToString(b));}
}
注: 必须首先用一个 map 将 每一个行引用转化成一维数组,然后在用第二个 toArray 结合 二维数组的构造函数,转化成二维数组。
输出结果:
[[3, 6, 8, 10], [4, 5, 6, 7]]
转载于:https://www.cnblogs.com/robinchen/p/11047605.html
java 使用 lamba 表达式处理二维数组相关推荐
- java读取图片成rgb二维数组
全栈工程师开发手册 (作者:栾鹏) java教程全解 java读取图片成rgb二维数组 测试代码 public static void main(String[] args) {Color[][] a ...
- Java IDEA Debug进制二维数组
1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序. 1.2 Debug介绍与操作流程 如何加断点 选择 ...
- 1.22 实例:Java输出杨辉三角形(使用二维数组)
利用 Java 的二维数组来输出指定行数的杨辉三角形. 杨辉三角形由数字进行排列,可以把它看作是一个数字表,其基本特性是两侧数值均为 1,其他位置的数值是其左上方数值与右上角数值之和.打印杨辉三角形时 ...
- Java中Arrays.toString ()打印二维数组及Array数组的常用操作
1.Java中Arrays.toString () 已知打印一维数组的API为System.out.println ( Arrays.toString ();,其参数为数组名或数组指针,其支持的数据类 ...
- JAVA进阶开发之(二维数组)
1.二维数组其实是一个特殊的一维数组,特殊在这个二维数组中每一个元素是一个一维数组 2.就是一维数组里面都是一样的元素,二维数组就是把元素换成了一维数组 3.实际开发中,使用最多的就是一维数组,二维数 ...
- 【Java】 杨辉三角 二维数组打印杨辉三角
Tips 打印三角的操作 : 每行打印前预留空格 打印指定数量的星号后换行 重复循环打印直至完成所有打印结果 杨辉三角: 三角规律空格最大对称值为 5 大于 5 则会变形 三角规律为当前值为上一个值加 ...
- java语言:创建一个二维数组,将古诗《春晓》的内容赋值于二维数组,然后分别用横版和竖版两种方式输出。
问题:创建一个二维数组,将古诗<春晓>的内容赋值于二维数组,然后分别用横版和竖版两种方式输出. 前两天上java课的时候老师,给我们出了这道题.要求:要用java语言来写. 根据要求创建的 ...
- 剑指offer编程题Java实现——面试题3二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 下面是我实现的代码,修 ...
- java 程序题 二分法查找二维数组(Dichotomy)
一个二分法查找二维数组的程序题 public class Search2DMatrix {public static void main(String[] args){int[][] matrix = ...
最新文章
- c# winform 关于给静态全局变量赋值的问题
- SQL基础操作_7_时间运算
- Oracle Grid 11.2.0.4 安装是出现INS-30510: Insufficient number of ASM disks selected.
- 【Elasticsearch】用Elasticsearch和Raspberry Pi构建一个真实世界的警报
- 友元函数的访问权限和注意事项
- 轻松调用Google翻译
- android启动第三方浏览器问题
- xp系统支持64g内存_让WindowsXP SP3支持64G内存,继续发回余热
- 邮件服务器需要445端口,445端口是什么服务端口(2)
- JavaScript插入DOM
- css防止高度塌陷,css之高度塌陷及其解决方法
- Obsidian css-snippets配置
- Mycat读写分离、主从切换、分库分表的操作记录 https://www.cnblogs.com/kevingrace/p/9365840.html
- 【python脚本】linux中编写运行python脚本
- c语言学生请假系统项目总结,学生管理系统项目总结.doc
- Simultaneous Feature Learning and Hash Coding with Deep Neural Networks
- 光场相机模拟程序解读
- 百度音乐电台升级紧跟豆瓣FM:强调坚持免费
- 纪念胡新宇君(转载)
- 复试-网安开放性问题
热门文章
- simulink怎么生成vxworks的执行程序_让天下没有难改的Simulink模型
- 调整jvm参数_JVM源码分析之MetaspaceSize和MaxMetaspaceSize的区别
- MFC UpdateData
- python xml转字典_python xml转成dict
- wpf messagebox.show()点击其他地方会闪烁_定时、童锁、故障查询,线控器上的这些功能你会用吗?...
- android create命令,phonegap运行android – create命令失败,退出代码8 – linux
- Python数据结构与算法(2.3)——链表
- 深度学习常用性能评价指标
- java字符串转字符串数组_Java字符串数组到字符串
- kotlin web_Kotlin Web应用程序教程