# UNDF: UNDF-2026-000000174 diff --git a/src/main/java/org/apache/ibatis/mapping/ResultMapping.java b/src/main/java/org/apache/ibatis/mapping/ResultMapping.java --- a/src/main/java/org/apache/ibatis/mapping/ResultMapping.java +++ b/src/main/java/org/apache/ibatis/mapping/ResultMapping.java @@ -18,8 +18,9 @@ import java.util.ArrayList; import java.util.Collections; +import java.util.EnumSet; import java.util.List; import java.util.Set; import org.apache.ibatis.session.Configuration; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.TypeHandler; @@ -42,7 +43,7 @@ public class ResultMapping { private Set notNullColumns; private String columnPrefix; - private List flags; + private Set flags; private List composites; private String resultSet; private String foreignColumn; @@ -66,7 +67,7 @@ public class ResultMapping { public Builder(Configuration configuration, String property) { resultMapping.configuration = configuration; resultMapping.property = property; - resultMapping.flags = new ArrayList<>(); + resultMapping.flags = EnumSet.noneOf(ResultFlag.class); resultMapping.composites = new ArrayList<>(); resultMapping.lazy = configuration.isLazyLoadingEnabled(); } @@ -133,7 +134,11 @@ public class ResultMapping { public Builder flags(List flags) { - resultMapping.flags = flags; + // Convert to EnumSet for O(1) contains() — ArrayList.contains() is O(F) per call + EnumSet enumFlags = EnumSet.noneOf(ResultFlag.class); + if (flags != null && !flags.isEmpty()) { + enumFlags.addAll(flags); + } + resultMapping.flags = enumFlags; return this; } @@ -153,7 +158,7 @@ public class ResultMapping { public ResultMapping build() { // lock down collections - resultMapping.flags = Collections.unmodifiableList(resultMapping.flags); + resultMapping.flags = Collections.unmodifiableSet(resultMapping.flags); resultMapping.composites = Collections.unmodifiableList(resultMapping.composites); validate(); return resultMapping; @@ -230,7 +235,7 @@ public class ResultMapping { return columnPrefix; } - public List getFlags() { + public Set getFlags() { return flags; }