Warum verwendet „UniqueElementsValidator“ nicht „Collection Instanceof Set“, um zu bestimmen, ob es doppelte Elemente enJava

Java-Forum
Guest
 Warum verwendet „UniqueElementsValidator“ nicht „Collection Instanceof Set“, um zu bestimmen, ob es doppelte Elemente en

Post by Guest »

Mir ist aufgefallen, dass die Implementierung von UniqueElementsValidator keine Sammlungsinstanz von Set verwendet, um zu prüfen, ob alle Elemente eindeutig sind.
public boolean isValid(Collection collection, ConstraintValidatorContext constraintValidatorContext) {
if ( collection == null || collection.size() < 2 ) { // why not use `collection instanceof Set`
return true;
}

List duplicates = findDuplicates( collection );

if ( duplicates.isEmpty() ) {
return true;
}

if ( constraintValidatorContext instanceof HibernateConstraintValidatorContext ) {
constraintValidatorContext.unwrap( HibernateConstraintValidatorContext.class )
.addMessageParameter( "duplicates", duplicates.stream().map( String::valueOf ).collect( Collectors.joining( ", " ) ) )
.withDynamicPayload( CollectionHelper.toImmutableList( duplicates ) );
}

return false;
}

Update
Es verwirrt mich, wenn die Sammlung festgelegt ist, dann ist das der Fall Es ist nicht erforderlich, die folgenden findDuplicates auszuführen, was die Leistung verbessern kann, es sei denn, die Verwendung von „instanceof“ ist teurer. Kann es jemand erklären?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post