Pourquoi appeler des méthodes de la classe de conteneurs au lieu des instances de celui-ci en Java

Mert Beşiktepe:

Je suis en train d'apprendre collections java. Mais il y a une syntaxe particulière que je ne comprends pas à appeler les méthodes de collecte. Comme .toString()ou .sort()par exemple;

Je ne comprends pas la raison pour laquelle nous appelons les méthodes ci - dessous de la classe des tableaux ou des collections de classe. Pour l' impression des tableaux ceci est appelé dans un println().

Arrays.toString(myArray);

Pour les listes de tri

Collections.sort(myList);

Et pourquoi pas ?

myArray.toString();

myList.sort();

Peut-on me promener à travers elle?

Adam Millerchip:

De la première ligne des docs :

Le cadre des collections est une architecture unifiée pour représenter et manipuler des collections, leur permettant de manipuler indépendamment des détails de leur représentation. Il réduit l'effort de programmation tout en augmentant les performances. Elle permet l'interopérabilité entre les API non apparentés, réduit l'effort dans la conception et l'apprentissage de nouvelles API, et favorise la réutilisation des logiciels. Le cadre est basé sur plus d'une douzaine d'interfaces de collecte. Il comprend les implémentations de ces interfaces et des algorithmes pour les manipuler.

L'objectif est de réduire la duplication de code. Dans le cas de myList.sort()toutes les mises en œuvre de l' Listinterface de devraient mettre en œuvre la sortfonction, et le tri de chaque mise en œuvre peuvent varier dans le comportement. Mais comme une méthode statique sur la Collectionsclasse, Listmises en œuvre ne doivent pas mettre en œuvre la fonction de tri. Du point de vue d'un utilisateur, vous pouvez passer tout ce que Listvous devez Collections.sort()et savoir ce qui va se passer.

Depuis Java 8, cette fonctionnalité aurait pu être mis en œuvre avec des méthodes par défaut, ce qui est ce List.sort(comparator)fait. Méthodes par défaut permettent toutes les implémentations d' une interface pour recevoir la mise en œuvre définie dans l'interface, donc de Java 8 , il est possible de le faire faire myList.sort(), avec la mise en garde que vous avez à lui dire comment trier en fournissant une fonction de comparaison. Par exemple, supposant que vous avez un List<Integer>: mylist.sort(Integer::compareTo). Mais les méthodes par défaut Collections Framework date d' avant, d' où la nécessité de Collections.sort().

En plus Collections.sort()et List.sort(comparator), vous pouvez également utiliser Stream.sorted():myList.stream().sorted().collect(Collectors.toList());

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=188046&siteId=1
conseillé
Classement