java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java字符串判断是否在list中

Java判断字符串是否在List中的方案详解(忽略大小写)

作者:五道书童

对于需要频繁调用且数据量大的情况,有几种优化方案可以选择,下面给大家分享三种方案给大家详细介绍java字符串判断是否在list中,感兴趣的朋友一起看看吧

Java中高效判断字符串是否在List中(忽略大小写)

对于需要频繁调用且数据量大的情况,有几种优化方案可以选择:

方案1:使用HashSet存储小写版本(推荐)

import java.util.*;
public class CaseInsensitiveLookup {
    private final Set<String> lowerCaseSet;
    public CaseInsensitiveLookup(List<String> originalList) {
        // 预处理:将所有字符串转为小写并存入HashSet
        this.lowerCaseSet = new HashSet<>(originalList.size());
        for (String s : originalList) {
            lowerCaseSet.add(s.toLowerCase());
        }
    }
    public boolean containsIgnoreCase(String target) {
        return lowerCaseSet.contains(target.toLowerCase());
    }
}

优点

缺点

方案2:使用TreeSet自定义比较器

import java.util.*;
public class CaseInsensitiveLookup {
    private final Set<String> treeSet;
    public CaseInsensitiveLookup(List<String> originalList) {
        this.treeSet = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
        treeSet.addAll(originalList);
    }
    public boolean containsIgnoreCase(String target) {
        return treeSet.contains(target);
    }
}

优点

缺点

方案3:并行流处理(适用于超大列表且不频繁调用)

import java.util.*;
public class CaseInsensitiveLookup {
    private final List<String> originalList;
    public CaseInsensitiveLookup(List<String> originalList) {
        this.originalList = originalList;
    }
    public boolean containsIgnoreCase(String target) {
        return originalList.parallelStream()
            .anyMatch(s -> s.equalsIgnoreCase(target));
    }
}

优点

缺点

最佳实践建议

使用示例

List<String> largeList = Arrays.asList("Apple", "Banana", "Orange", ...);
CaseInsensitiveLookup lookup = new CaseInsensitiveLookup(largeList);
// 频繁调用
boolean contains = lookup.containsIgnoreCase("apple");  // 返回true

选择哪种方案取决于你的具体场景:数据量大小、查询频率、列表变更频率和内存限制等因素。

到此这篇关于Java中高效判断字符串是否在List中(忽略大小写)的文章就介绍到这了,更多相关java字符串判断是否在list中内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文