Les collections Eclipse ont-elles été obsolètes par Java 8? [fermé]


Je suis récemment tombé sur les collections Eclipse, et elles ont l'air géniales - à peu près aussi géniales que les flux Java 8. J'ai lu quelques introductions, présentations et tutoriels, et il semble que presque tout ce que EC a ajouté, vous pouvez faire avec les flux de nos jours.

Sans en aucune façon signifier de mettre bas EC, y a-t-il une valeur que la bibliothèque ajoute encore maintenant que nous avons des flux, qui ont peut-être été passés sous silence dans ce que j'ai lu ? Ou a t il essentiellement suivi le chemin de Joda temps; étant si bon qu'il a été adopté en Java à peu près mot pour mot, ce qui nie le besoin de la bibliothèque ?

Author: Torque, 2018-04-20

1 answers

À Partir de https://www.eclipse.org/collections/

Histoire des collections Eclipse
L'origine des collections Eclipse était a commencé comme un cadre de collections nommé Caramel chez Goldman Sachs en 2004. Depuis lors, le cadre a évolué, et en 2012, il était open source à GitHub comme un projet appelé GS Collections.

GS Collections a été présenté lors de plusieurs conférences, notamment JVM Summit en 2012 et JavaOne en 2014. Un comparaison des performances entre les implémentations paresseuses parallèles de Java 8, Scala et GS Collections a été présenté à QCon New York en 2014. Aussi des articles à propos de GS Collections (Part1 / Part2) ont publié sur InfoQ.com montrant certaines des capacités du cadre de collections par des exemples, et aussi des interviews au créateur des collections GS.

Au fil des ans, environ 40 développeurs de la même société ont contribution au cadre de recouvrement.

Pour maximiser la meilleure nature de projet open source, GS Collections a été migré vers la Fondation Eclipse, rebaptisée Eclipse Collections en 2015. Maintenant, le cadre est entièrement ouvert à la communauté, accepter des contributions!

Il semble qu'il soit toujours vivant. Et si vous lisez la page ci-dessus, il est pleinement opérationnel avec java 8 lambda.

boolean anyPeopleHaveCats =
  this.people
    .anySatisfy(person -> person.hasPet(PetType.CAT));

boolean anyPeopleHaveCats =
  this.people
    .stream()
    .anyMatch(person -> person.hasPet(PetType.CAT));

Lorsque vous regardez le référentiel https://github.com/eclipse/eclipse-collections, vous pouvez voir que il y a encore des contributions faites et fusionnées.

Je dirais donc que ce n'est pas obsolète, mais une fonctionnalité supplémentaire des méthodes prêtes à l'emploi que vous pouvez utiliser avec votre propre code et vos flux java pour faciliter le streaming.

Il ajoute toujours des fonctions de comparateur faciles, etc.. vous n'avez donc pas besoin d'écrire le vôtre, vous pouvez simplement implémenter une méthode lamda prête à l'emploi ou un analyseur de flux qui répondent à vos besoins. Cela semble superflu, car anySatisfy ressemble beaucoup à filter, mais il ajoute un beaucoup de clarté pour le code en écrivant ce qui devrait se passer exactement dans le code lui-même.
Les piles et les sacs me semblent utiles dans certaines circonstances. Et parfois, vous ne voulez pas utiliser de flux car c'est une petite collection(1000 ou moins), ce qui rend la surcharge de l'initialisation des flux n'en vaut pas la peine. Et cela rend beaucoup plus facile d'écrire du code plus petit qui fonctionne mieux.

Ce n'est peut-être pas aussi utile qu'avant java8, mais il y a toujours une place pour il.

 0
Author: Tschallacka, 2018-04-20 10:10:13