The previous implementation uses ArrayList for storing resolved
resources and ArrayList has O(n) time complexity for the contains
operation. By switching to the HashSet for storing resolved
resources we improve the time complexity of this operation to be O(1).
See gh-25927
@ -129,7 +129,7 @@ public class ResourceArrayPropertyEditor extends PropertyEditorSupport {
@@ -129,7 +129,7 @@ public class ResourceArrayPropertyEditor extends PropertyEditorSupport {
// A location pattern: resolve it into a Resource array.
@ -137,11 +137,7 @@ public class ResourceArrayPropertyEditor extends PropertyEditorSupport {
@@ -137,11 +137,7 @@ public class ResourceArrayPropertyEditor extends PropertyEditorSupport {
// ignore - might be an unresolved placeholder or non-existing base directory
@ -152,10 +148,7 @@ public class ResourceArrayPropertyEditor extends PropertyEditorSupport {
@@ -152,10 +148,7 @@ public class ResourceArrayPropertyEditor extends PropertyEditorSupport {
}
elseif(elementinstanceofResource){
// A Resource object: add it to the result.
Resourceresource=(Resource)element;
if(!merged.contains(resource)){
merged.add(resource);
}
merged.add((Resource)element);
}
else{
thrownewIllegalArgumentException("Cannot convert element ["+element+"] to ["+