常见的使用场景,java后端经常需要传递多个参数值,用【,】隔开,然后后台再使用split进行数据分割,转换成列表,但是有时候,这个列表,还需要二次转换成其他数据,往往需要好几行代码才能实现,所以想了下,jdk8以后的版本,都是支持流处理的,可以非常方便的转换这类数据,将 String 数据转换成 List 、List、List 等数组
// 格式化转换,有时候得到的数据,很奇怪,就需要特殊处理下
String ids = "1,2,3,4,5,,6,非数字,7";
List<Integer> idList = Arrays.stream(ids.split(",")) // 切割字符串
.filter(o -> NumberUtil.isNumber(o)) // 判断数据是否是数字格式
.map(Integer::parseInt) // 转换成所需要的数字格式
.collect(Collectors.toList());
// 打印执行结果
System.out.println(idList);
执行结果(较好地输出了结果值)
[1, 2, 3, 4, 5, 6, 7]
如上,只要一行代码,就可以将一个字符串变量提取成需要的格式,并转换成列表,方便用于各种数据操作
List idList = Arrays.stream(ids.split(",")).filter(o -> NumberUtil.isNumber(o)).map(Integer::parseInt).collect(Collectors.toList());