最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java判斷字符串是否在List中的方案詳解(忽略大小寫)

 更新時(shí)間:2025年05月16日 14:53:58   作者:五道書童  
對(duì)于需要頻繁調(diào)用且數(shù)據(jù)量大的情況,有幾種優(yōu)化方案可以選擇,下面給大家分享三種方案給大家詳細(xì)介紹java字符串判斷是否在list中,感興趣的朋友一起看看吧

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

對(duì)于需要頻繁調(diào)用且數(shù)據(jù)量大的情況,有幾種優(yōu)化方案可以選擇:

方案1:使用HashSet存儲(chǔ)小寫版本(推薦)

import java.util.*;
public class CaseInsensitiveLookup {
    private final Set<String> lowerCaseSet;
    public CaseInsensitiveLookup(List<String> originalList) {
        // 預(yù)處理:將所有字符串轉(zhuǎn)為小寫并存入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());
    }
}

優(yōu)點(diǎn)

  • 預(yù)處理時(shí)間復(fù)雜度O(n),之后每次查詢時(shí)間復(fù)雜度O(1)
  • HashSet的查找效率極高
  • 內(nèi)存占用相對(duì)合理

缺點(diǎn)

  • 初始構(gòu)建需要遍歷整個(gè)列表
  • 如果原始列表頻繁變化,需要重新構(gòu)建Set

方案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);
    }
}

優(yōu)點(diǎn)

  • 查詢時(shí)間復(fù)雜度O(log n)
  • 保持元素有序

缺點(diǎn)

  • 比HashSet稍慢
  • 同樣需要預(yù)處理

方案3:并行流處理(適用于超大列表且不頻繁調(diào)用)

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));
    }
}

優(yōu)點(diǎn)

  • 不需要預(yù)處理
  • 可以利用多核CPU

缺點(diǎn)

  • 每次查詢都需要遍歷(雖然并行)
  • 不適合頻繁調(diào)用場(chǎng)景

最佳實(shí)踐建議

  • 如果列表不常變化:使用方案1(HashSet),這是查詢效率最高的方法
  • 如果需要保持插入順序:考慮LinkedHashSet
  • 如果列表經(jīng)常變化:考慮方案3或使用ConcurrentHashMap實(shí)現(xiàn)類似方案1的功能
  • 如果內(nèi)存非常緊張:可以考慮方案3,但性能會(huì)下降

使用示例

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

選擇哪種方案取決于你的具體場(chǎng)景:數(shù)據(jù)量大小、查詢頻率、列表變更頻率和內(nèi)存限制等因素。

到此這篇關(guān)于Java中高效判斷字符串是否在List中(忽略大小寫)的文章就介紹到這了,更多相關(guān)java字符串判斷是否在list中內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 源碼解析JDK 1.8 中的 Map.merge()

    源碼解析JDK 1.8 中的 Map.merge()

    這篇文章主要介紹了JDK 1.8 之 Map.merge()的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java面試必問之ThreadLocal終極篇分享

    Java面試必問之ThreadLocal終極篇分享

    ThreadLocal是什么呢?其實(shí)ThreadLocal并非是一個(gè)線程的本地實(shí)現(xiàn)版本,它并不是一個(gè)Thread,而是thread local variable(線程局部變量),這篇文章主要給大家介紹了關(guān)于Java面試必問之ThreadLocal終極篇的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 解決Maven多模塊編譯慢的問題

    解決Maven多模塊編譯慢的問題

    這篇文章主要介紹了Maven多模塊編譯慢的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java中BigDecimal用法詳解

    java中BigDecimal用法詳解

    本文詳細(xì)講解了java中BigDecimal的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • MyBatis中#{}?和?${}?的區(qū)別和動(dòng)態(tài)?SQL詳解

    MyBatis中#{}?和?${}?的區(qū)別和動(dòng)態(tài)?SQL詳解

    這篇文章主要介紹了MyBatis中#{}和${}的區(qū)別,包括參數(shù)傳遞、安全性、性能等方面,然后詳細(xì)介紹了如何使用#{}和${}進(jìn)行排序、模糊查詢、動(dòng)態(tài)SQL、數(shù)據(jù)庫連接池等操作,最后,總結(jié)了注解方式的動(dòng)態(tài)SQL,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • 全面解析@InsertProvider執(zhí)行原理

    全面解析@InsertProvider執(zhí)行原理

    這篇文章主要介紹了全面解析@InsertProvider執(zhí)行原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • hibernate批量操作實(shí)例詳解

    hibernate批量操作實(shí)例詳解

    這篇文章主要介紹了hibernate批量操作,結(jié)合實(shí)例形式分析了Hibernate實(shí)現(xiàn)批量插入,更新及刪除等操作的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-03-03
  • java生成XML的方法【附demo源碼下載】

    java生成XML的方法【附demo源碼下載】

    這篇文章主要介紹了java生成XML的方法,涉及java針對(duì)xml格式文件的簡(jiǎn)單操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下
    2016-12-12
  • Java線程池核心參數(shù)原理及使用指南

    Java線程池核心參數(shù)原理及使用指南

    本文詳細(xì)介紹了Java線程池的基本概念、核心類、核心參數(shù)、工作原理、常見類型以及最佳實(shí)踐,通過理解每個(gè)參數(shù)的含義和工作原理,可以更好地配置線程池,提高系統(tǒng)性能,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • 詳解Elasticsearch如何把一個(gè)索引變?yōu)橹蛔x

    詳解Elasticsearch如何把一個(gè)索引變?yōu)橹蛔x

    這篇文章主要為大家介紹了詳解Elasticsearch如何把一個(gè)索引變?yōu)橹蛔x示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評(píng)論

武夷山市| 鄢陵县| 徐闻县| 民勤县| 东丰县| 吴江市| 上栗县| 金山区| 寿阳县| 西盟| 西丰县| 涟水县| 曲沃县| 行唐县| 西安市| 南宫市| 二手房| 泾川县| 新野县| 汶上县| 濮阳县| 烟台市| 兴隆县| 色达县| 桐庐县| 石嘴山市| 云阳县| 昆山市| 西昌市| 江阴市| 靖远县| 浏阳市| 福清市| 宕昌县| 蒲江县| 西乌珠穆沁旗| 乌苏市| 长泰县| 稻城县| 读书| 定南县|