[
https://issues.apache.org/jira/browse/VALIDATOR-266?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12699706#action_12699706
]
Bruce Collie commented on VALIDATOR-266:
----------------------------------------
A better solution would be to sort the arrays within a static block
e.g.
static
{
Arrays.sort(INFRASTRUCTURE_TLDS);
Arrays.sort(COUNTRY_CODE_TLDS);
Arrays.sort(GENERIC_TLDS);
Arrays.sort(COUNTRY_CODE_TLDS);
}
Then use Arrays.binarySearch in the various isvalidXXX() calls
e.g.
public boolean isValidInfrastructureTld(String iTld) {
return
Arrays.binarySearch(INFRASTRUCTURE_TLDS,chompLeadingDot(iTld.toLowerCase()))>=0;
}
That way the lists are obsolete and you save a little memory at the same time
> DomainValidator uses an O(n) method where an O(1) would be more appropriate
> ---------------------------------------------------------------------------
>
> Key: VALIDATOR-266
> URL: https://issues.apache.org/jira/browse/VALIDATOR-266
> Project: Commons Validator
> Issue Type: Bug
> Components: Routines
> Affects Versions: 1.4
> Reporter: Chris Wareham
> Priority: Minor
>
> The class org.apache.commons.validator.routines.DomainValidator contains
> several hard coded arrays of TLD names. Quite apart from whether these should
> be in a properties file rather than the source file itself, they are then
> used to populate List instances via Arrays.asList() and the List.contains()
> method used when validating a TLD. This is almost inevitably an O(n)
> operation on each list, and could be improved by populating a single HashSet
> which would provide O(1) performance.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.