后台接收字符串ids如何处理
public static Set<Long> splitIdsStr(String idsStr) {
return Strings.isNotBlank(idsStr) ? Arrays.stream(idsStr.split(","))
.filter(id -> Pattern.matches("\\d+", id))
.map(Long::valueOf)
.collect(Collectors.toSet()) : Collections.emptySet();
}
方法接收一个形参 idsStr,表示需要切割的字符串。具体操作如下:
1.首先使用 Apache Commons Lang 库中的 Strings.isNotBlank 方法判断 idsStr 是否非空非null。
2.如果 idsStr 不为空,则进行后续的切割和转换操作;如果为空,则返回一个空的 Set 集合(Collections.emptySet())。
3.将 idsStr 以逗号(",")作为分隔符进行切割,得到一个字符串数组。
4.使用 Arrays.stream 方法将字符串数组转换为流(Stream<String>)。
5.过滤流中的元素,只保留匹配正则表达式 "\d+" 的元素,即只保留由数字组成的字符串。
6.使用 map 方法将每个符合条件的字符串转换为长整型数据(Long)。
7.最后使用 collect(Collectors.toSet()) 将流中的元素收集到一个 Set<Long> 集合中,并作为方法的返回值。
该方法的功能是将传入的字符串按逗号分隔,并筛选出由数字组成的部分,转换为长整型数据,并将最终结果以 Set 的形式返回