Todas las abstracciones no triviales, hasta cierto punto, tienen fugas. Dicho esto, no estoy realmente seguro de que se aplique aquí. :-)
Las abstracciones tienen que ver con el comportamiento. A menos que el comportamiento especifique un rendimiento particular (que Java Listno lo hace) es un detalle de implementación, es decir, irrelevante.
Java no le permite especificar un rendimiento mínimo para las interfaces fuera de la documentación, y no conozco ningún lenguaje que lo haga; sería increíblemente difícil (¿imposible?) Que el compilador lo verifique. Puedo ver un par de opciones si el rendimiento es una preocupación:
- Documente en la clase / interfaz a la que pertenecerá la instancia de la lista.
- Cree una nueva interfaz, por ejemplo
BinarySearchPerformantList(¡qué asco!), Que especifica los requisitos de rendimiento de los distintos métodos.
La opción 2 es probablemente la mejor abstracción, pero viene con una sobrecarga adicional.