大多数情况下,我们会遇到需要迭代Java Collection并基于一些业务进行过滤的场景。使用传统方式实现需要使用大量循环和判断操作才能获得期望结果。
java 8 引入新的Stream api,方便我们使用声明方式处理数据。本文我们将说明如何使用Stream api分割逗号分割字符串至list,以及如何连接字符串数组、list至逗号分割字符串;
下面大体写了下实验代码,有点简单,但是能说明问题!不熟悉lambda表达式的建议同学可以参考前面几篇文章,了解下,不然看起来可能有点懵;
String string = "a,bbb,ss,,s";
System.out.println("--------字符串以“,”切分(普通模式)---------");
for (String str : string.split(",")) {
System.out.println(str);
}
System.out.println("--------字符串以“,”切分(流处理)---------");
Stream.of(string.split(",")).forEach(System.out::println);
运行结果为:
切分字符串一样的结果,代码量也没有少多少好像? 别急这里还没有将其加入到list中,加入后代码如下:
String string = "a,bbb,ss,,s";
System.out.println("--------字符串以“,”切分(普通模式)---------");
ArrayList
一行代码就可以搞定了,恩,又能少写代码了,哈哈;
List asList = Arrays.asList("a", "ss", "", "s", "");
System.out.println("---------list遍历后以“,”分隔(普通模式)----------");
StringBuffer resultBuffer = new StringBuffer();
for (int i = 0; i < asList.size(); i++) {
String result = asList.get(i);
if (i == 0) {
resultBuffer.append(result);
} else {
resultBuffer.append("," + result);
}
}
String testResult = resultBuffer.toString();
//System.out.println(testResult);
System.out.println("---------list遍历后以“,”分隔(流模式)----------");
String collect2 = asList.stream().collect(Collectors.joining(","));
//System.out.println(collect2);
运行后结果如下:
是不是更加开心了,又是一行代码搞定。