perf(core): optimize queryVerticesByIds for only-one-id query by javeme · Pull Request #2859 · apache/hugegraph

The same optimization pattern is duplicated for edges and vertices. Consider creating a generic helper method to reduce code duplication:

private <T extends HugeElement> Map<Id, T> querySingleElement(
    Id id, 
    HugeType type,
    Map<Id, T> added,
    Map<Id, T> updated, 
    Map<Id, T> removed,
    Function<IdQuery, Iterator<T>> backendQuery) {
    
    if (id == null) {
        return ImmutableMap.of();
    }
    
    // Check local transaction state
    if (removed.containsKey(id)) {
        return ImmutableMap.of();
    }
    
    T element = added.get(id);
    if (element == null) {
        element = updated.get(id);
    }
    
    if (element != null && !element.expired()) {
        return ImmutableMap.of(id, element);
    }
    
    // Query backend
    IdQuery query = new IdQuery.OneIdQuery(type, id);
    T backendElement = QueryResults.one(backendQuery.apply(query));
    return backendElement == null ? ImmutableMap.of() : ImmutableMap.of(id, backendElement);
}

This would eliminate the duplication between vertex and edge query methods.