¿Por qué llamar a los métodos de la clase de contenedor en lugar de instancias de ella en Java

Mert Besiktepe:

Estoy tratando de aprender colecciones de Java. Pero hay una sintaxis particular que no puedo entender acerca de llamar a los métodos de recolección. Como .toString()o .sort()por ejemplo;

No entiendo la razón por la que estamos llamando los siguientes métodos de clase o clase Colecciones matrices. Para las matrices de impresión esto se llama el interior de una println().

Arrays.toString(myArray);

Para ordenar listas

Collections.sort(myList);

Y por qué no ?

myArray.toString();

myList.sort();

Cualquiera puede caminar a través de él?

Adam Millerchip:

A partir de la primera línea de los documentos :

El marco de las colecciones es una arquitectura unificada para representar y manipular colecciones, lo que les permite ser manipuladas independientemente de los detalles de su representación. Reduce la programación de esfuerzo a la vez que aumenta el rendimiento. Se permite la interoperabilidad entre las API no relacionados, reduce el esfuerzo en el diseño y el aprendizaje de nuevas API, y fomenta la reutilización de software. El marco se basa en más de una docena de las interfaces de recolección. Incluye implementaciones de estas interfaces y algoritmos para manipularlos.

El objetivo es reducir la duplicación de código. En el caso de myList.sort(), todas las implementaciones de la Listinterfaz tendrían que poner en práctica la sortfunción y tipo de cada aplicación pueden variar en el comportamiento. Sino como un método estático de la Collectionsclase, Listlas implementaciones no necesitan implementar la función de clasificación. Desde la perspectiva de un usuario, puede pasar todo lo Listque tiene que Collections.sort()y saber lo que va a ocurrir.

Desde Java 8, esta funcionalidad podría haber sido implementado con métodos predeterminados, que es lo que List.sort(comparator)hace. Métodos predeterminados permiten todas las implementaciones de una interfaz para recibir la aplicación definida en la interfaz, por lo que desde Java 8 que es posible hacer hacer myList.sort(), con la advertencia de que usted tiene que decirle cómo ordenar al proporcionar una función de comparación. Por ejemplo, suponiendo que tiene una List<Integer>: mylist.sort(Integer::compareTo). Sin embargo, los métodos de pre-fechas predeterminadas marco de las colecciones, de ahí la necesidad de Collections.sort().

Así como Collections.sort()y List.sort(comparator), también se puede utilizar Stream.sorted():myList.stream().sorted().collect(Collectors.toList());

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=188050&siteId=1
Recomendado
Clasificación