diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java index c2c1f06cd2..c1b5eb1042 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java @@ -19,8 +19,8 @@ package org.apache.poi.xssf.usermodel; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentSkipListMap; -import org.apache.commons.collections4.map.CaseInsensitiveMap; import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.formula.EvaluationName; import org.apache.poi.ss.formula.EvaluationWorkbook; @@ -364,7 +364,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork if ( _tableCache != null ) { return _tableCache; } - _tableCache = new CaseInsensitiveMap<>(); + _tableCache = new ConcurrentSkipListMap<>(String.CASE_INSENSITIVE_ORDER); for (Sheet sheet : _uBook) { for (XSSFTable tbl : ((XSSFSheet)sheet).getTables()) { diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTable.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTable.java index 39f45df8e3..fbba2f697a 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTable.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTable.java @@ -26,8 +26,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.concurrent.ConcurrentSkipListMap; -import org.apache.commons.collections4.map.CaseInsensitiveMap; import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.ss.SpreadsheetVersion; @@ -59,7 +59,7 @@ public class XSSFTable extends POIXMLDocumentPart implements Table { private CTTable ctTable; private transient List xmlColumnPrs; private transient List tableColumns; - private transient CaseInsensitiveMap columnMap; + private transient ConcurrentSkipListMap columnMap; private transient CellReference startCellReference; private transient CellReference endCellReference; private transient String commonXPath; @@ -831,8 +831,7 @@ public class XSSFTable extends POIXMLDocumentPart implements Table { public int findColumnIndex(String columnHeader) { if (columnHeader == null) return -1; if (columnMap == null) { - final int count = getColumnCount(); - columnMap = new CaseInsensitiveMap<>(count * 3 / 2); + columnMap = new ConcurrentSkipListMap<>(String.CASE_INSENSITIVE_ORDER); int i = 0; for (XSSFTableColumn column : getColumns()) {