java steam filter 省市区三级地址先精确匹配,没有则匹配*
时间: 2023-08-24 18:04:16 浏览: 84
java 省市区三级联动
可以使用Java 8中的Stream流和filter操作符来实现省市区三级地址先精确匹配,如果没有匹配成功,则匹配*的操作。具体代码如下:
```
List<String> addresses = new ArrayList<>();
addresses.add("北京市朝阳区");
addresses.add("北京市海淀区");
addresses.add("上海市浦东新区");
addresses.add("广东省深圳市南山区");
String searchAddress = "北京市海淀区";
Optional<String> result = addresses.stream() // 将List转为Stream
.filter(s -> s.equals(searchAddress)) // 精确匹配
.findFirst(); // 返回第一个匹配成功的元素,如果没有则返回一个空的Optional对象
if (!result.isPresent()) { // 如果没有匹配成功
result = addresses.stream() // 再次将List转为Stream
.filter(s -> s.startsWith(searchAddress.substring(0, 2))) // 匹配省份
.filter(s -> s.endsWith("*")) // 匹配*号
.findFirst(); // 返回第一个匹配成功的元素,如果没有则返回一个空的Optional对象
}
if (result.isPresent()) { // 如果存在匹配成功的元素
System.out.println("匹配成功:" + result.get());
} else { // 如果不存在匹配成功的元素
System.out.println("匹配失败");
}
```
这段代码首先使用Stream流和filter操作符进行精确匹配,如果匹配成功则返回一个Optional对象;如果匹配不成功,则再次使用Stream流和filter操作符进行匹配省份和*,如果匹配成功则返回一个Optional对象。最后判断Optional对象是否存在匹配成功的元素,如果存在则输出匹配成功的元素,否则输出匹配失败的信息。
阅读全文