java8 流处理字符串分隔字符串

2022-08-24 11:25:26

大多数情况下,我们会遇到需要迭代Java Collection并基于一些业务进行过滤的场景。使用传统方式实现需要使用大量循环和判断操作才能获得期望结果。

java 8 引入新的Stream api,方便我们使用声明方式处理数据。本文我们将说明如何使用Stream api分割逗号分割字符串至list,以及如何连接字符串数组、list至逗号分割字符串;

下面大体写了下实验代码,有点简单,但是能说明问题!不熟悉lambda表达式的建议同学可以参考前面几篇文章,了解下,不然看起来可能有点懵;

分割逗号分割字符串至list

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<Object> list = new ArrayList<>();
		for (String str : string.split(",")) {
			list.add(str);
		}

		System.out.println("--------字符串以“,”切分(流处理)---------");
		List<String> collect = Stream.of(string.split(",")).collect(Collectors.toList());

一行代码就可以搞定了,恩,又能少写代码了,哈哈;

连接字符串数组、list至逗号分割字符串

List<String> 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);

运行后结果如下:

是不是更加开心了,又是一行代码搞定。

  • 作者:Mr_baci
  • 原文链接:https://blog.csdn.net/java_zyq/article/details/88422865
    更新时间:2022-08-24 11:25:26