Java中如何判断字符串结尾是否匹配ArrayList中的任意元素
你要的校验逻辑可以直接通过遍历后缀列表逐一匹配实现,无需额外依赖,实现方式如下:
基础实现(兼容全Java版本)
/** * 校验字符串结尾是否匹配列表中任意一个后缀 * @param current 待校验的字符串 * @param suffixList 存储待匹配后缀的ArrayList * @return 匹配到任意后缀返回true,否则返回false */ public boolean checkEndsWithAny(String current, ArrayList<String> suffixList) { // 空场景直接返回不匹配 if (current == null || suffixList == null || suffixList.isEmpty()) { return false; } // 遍历所有后缀逐一匹配 for (String suffix : suffixList) { if (suffix != null && current.endsWith(suffix)) { // 匹配到直接返回,无需继续遍历 return true; } } // 所有后缀都不匹配 return false; }
Java 8+ 简化写法(Stream流实现)
如果你使用Java 8及以上版本,可以用Stream API简化成单行表达式,代码更简洁:
import java.util.Objects; import java.util.Optional; import java.util.Collections; // 直接调用即可得到布尔结果 boolean matchResult = Optional.ofNullable(suffixList) .orElse(Collections.emptyList()) .stream() .filter(Objects::nonNull) .anyMatch(current::endsWith);
说明
- 两段实现都内置了空指针防护,覆盖
current为空、后缀列表为空、列表内后缀元素为空的异常场景,不需要对应防护逻辑可自行删除 - 匹配到第一个符合要求的后缀就会终止遍历,性能最优
内容的提问来源于stack exchange,提问作者Roshan R.
相关产品推荐
相关产品推荐

