<!DOCTYPE html>
<!--
  ~ Copyright (c) 2018 Goldman Sachs
  ~ All rights reserved. This program and the accompanying materials
  ~ are made available under the terms of the Eclipse Public License v1.0
  ~ and Eclipse Distribution License v. 1.0 which accompany this distribution.
  ~ The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
  ~ and the Eclipse Distribution License is available at
  ~ http://www.eclipse.org/org/documents/edl-v10.php.
  -->

<html lang="fr">

<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="shortcut icon" type="image/x-icon" href="../favicon.ico" />

    <title>Eclipse Collections - Fonctionnalités dont vous rêvez avec les collections dont vous avez besoin. </title>

    <!-- Bootstrap Core CSS -->
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha256-7s5uDGW3AHqw6xtJmNNtr+OBRJUlgkNJEo78P4b0yRw= sha512-nNo+yCHEyn0smMxSswnf/OnX6/KwJuZTlNZBjauKhTK0c+zT+q5JOCx0UFhXQ6rJR9jg6Es8gPuD2uZcYDLqSw==" crossorigin="anonymous">

    <!-- Custom CSS -->
    <link href="../css/landing-page.css" rel="stylesheet">

    <!-- Custom Fonts -->
    <link href="//fonts.googleapis.com/css?family=Roboto+Condensed:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">

    <!-- Google Code Prettify -->
    <link href="../css/sunburst.css" rel="stylesheet" type="text/css">

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
    <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->

</head>

<body>

<!-- Navigation -->
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
    <div class="container topnav">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <img src="../img/eclipse-collections-logo.png" style="width:175px;height:50px;" align="left" alt="Eclipse Collections">
        </div>
        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav navbar-right">
                <li>
                    <a href="#start">Premiers pas</a>
                </li>
                <li>
                    <a href="#concept">Concepts</a>
                </li>
                <li>
                    <a href="#learn">Découvrir</a>
                </li>
                <li>
                    <a href="#history">Origine</a>
                </li>
                <li>
                    <a href="#refGuide">Guide de référence</a>
                </li>
                <li>
                    <a href="#sourceCode">Code Source</a>
                </li>
                <li>
                    <a href="#contribute">Contribuer</a>
                </li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
                       aria-expanded="false">Javadoc<span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a href="../javadoc/10.0.0">10.0.0</a></li>
                        <li><a href="../javadoc/9.2.0">9.2.0</a></li>
                        <li><a href="../javadoc/9.1.0">9.1.0</a></li>
                        <li><a href="../javadoc/9.0.0">9.0.0</a></li>
                        <li><a href="../javadoc/8.2.0">8.2.0</a></li>
                        <li><a href="../javadoc/8.1.0">8.1.0</a></li>
                        <li><a href="../javadoc/8.0.0">8.0.0</a></li>
                        <li><a href="../javadoc/7.1.0">7.1.0</a></li>
                    </ul>
                </li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
                       aria-expanded="false">Langage<span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a href="../index.html">English</a></li>
                        <li><a href="../de/index.html">Deutsch</a></li>
                        <li><a href="../cn/index.html">中文</a></li>
                        <li><a href="">Français</a></li>
                        <li><a href="../ja/index.html">日本語</a></li>
                        <li><a href="../pt-br/index.html">Português-Brasil</a></li>
                        <li><a href="../ru/index.html">Русский</a></li>
                    </ul>
                </li>
            </ul>
        </div>
        <!-- /.navbar-collapse -->
    </div>
    <!-- /.container -->
</nav>


<!-- Header -->
<a class="anchor" name="about"></a>
<div class="intro-header">
    <div class="container-fluid">

        <div class="row">
            <div class="col-lg-push-2 col-lg-8">
                <div class="intro-message">
                    <h1>Eclipse <span style="font-weight: 400">Collections</span></h1>
                    <h3>- Fonctionnalités dont vous rêvez avec les collections dont vous avez besoin -</h3>
                </div>
            </div>
        </div>

    </div>
    <!-- /.container -->

</div>
<!-- /.intro-header -->

<!-- Page Content -->

<a class="anchor" name="start"></a>
<div class="content-section-a">

    <div class="container-fluid">
        <div class="row">
            <div class="col-lg-5 col-sm-6">
                <hr class="section-heading-spacer">
                <div class="clearfix"></div>
                <h2 class="section-heading">Premiers pas avec les <br>Eclipse Collections</h2>
                <p class="lead">Eclipse Collections est la meilleure librairie Java de Collections.
                    Elle va dynamiser tous vos projets Java.
                    <br><br>Utilisez la dans vos projets dès aujourd'hui avec vos outils de développement favoris!</p>
            </div>
            <div class="col-lg-7 col-sm-6">
                <ul class="nav nav-tabs">
                    <li class="active"><a href="#maven" data-toggle="tab">Maven</a></li>
                    <li><a href="#gradle" data-toggle="tab">Gradle</a></li>
                    <li><a href="#ivy" data-toggle="tab">Ivy</a></li>
                    <li><a href="#download" data-toggle="tab">Téléchargement</a></li>
                </ul>
                <div id="dependencies" class="tab-content">
                    <div class="tab-pane fade in active" id="maven">
                            <pre  class="prettyprint">
&lt;dependency&gt;
  &lt;groupId&gt;org.eclipse.collections&lt;/groupId&gt;
  &lt;artifactId&gt;eclipse-collections-api&lt;/artifactId&gt;
  &lt;version&gt;10.0.0&lt;/version&gt;
&lt;/dependency&gt;

&lt;dependency&gt;
  &lt;groupId&gt;org.eclipse.collections&lt;/groupId&gt;
  &lt;artifactId&gt;eclipse-collections&lt;/artifactId&gt;
  &lt;version&gt;10.0.0&lt;/version>
&lt;/dependency&gt;</pre>
                    </div>
                    <div class="tab-pane fade" id="gradle">
                            <pre  class="prettyprint">
compile 'org.eclipse.collections:eclipse-collections-api:10.0.0'
compile 'org.eclipse.collections:eclipse-collections:10.0.0'</pre>
                    </div>
                    <div class="tab-pane fade" id="ivy">
                            <pre  class="prettyprint">
&lt;dependency org="org.eclipse.collections" name="eclipse-collections-api" rev="10.0.0" /&gt;
&lt;dependency org="org.eclipse.collections" name="eclipse-collections" rev="10.0.0" /&gt;</pre>
                    </div>
                    <div class="tab-pane fade" id="download">
                            <pre class="prettyprint">
<a target="_blank" href="http://mvnrepository.com/artifact/org.eclipse.collections/eclipse-collections-api/10.0.0">eclipse-collections-api-10.0.0.jar</a>
<a target="_blank" href="http://mvnrepository.com/artifact/org.eclipse.collections/eclipse-collections/10.0.0">eclipse-collections-10.0.0.jar</a></pre>
                    </div>

                </div>
            </div>
        </div>

    </div>
    <!-- /.container -->

</div>
<!-- Get Started -->

<a class="anchor" name="concept"></a>
<div class="content-section-b">

    <div class="container-fluid">

        <div class="row">
            <div class="col-lg-push-7 col-lg-5 col-sm-push-6  col-sm-6">
                <hr class="section-heading-spacer">
                <div class="clearfix"></div>
                <h2 class="section-heading">Une API claire, riche et concise.</h2>
                <p class="lead">Multipliez la puissance des expressions lambda de Java 8 avec
                    une API complète directement utilisable pour vos collections.
                </p>
            </div>
            <div class="col-lg-pull-5 col-lg-7 col-sm-pull-6  col-sm-6">
                <ul class="nav nav-tabs">
                    <li class="active"><a href="#method" data-toggle="tab">Exemples d'utilisation des Eclipse Collections</a></li>
                    <li><a href="#ec" data-toggle="tab">Exemples avec des expressions lambda</a></li>
                    <li><a href="#streams" data-toggle="tab">Java 8 Streams</a></li>
                </ul>
                <div id="ec-vs-streams" class="tab-content">
                    <div class="tab-pane fade in active" id="method">
                            <pre  class="prettyprint lang-java">
boolean anyPeopleHaveCats =
  this.people
    .anySatisfyWith(Person::hasPet, PetType.CAT);

int countPeopleWithCats =
  this.people
    .countWith(Person::hasPet, PetType.CAT);

MutableList&lt;Person&gt; peopleWithCats =
  this.people
    .selectWith(Person::hasPet, PetType.CAT)</pre>
                    </div>
                    <div class="tab-pane fade" id="ec">
                            <pre  class="prettyprint lang-java">
boolean anyPeopleHaveCats =
  this.people
    .anySatisfy(person -> person.hasPet(PetType.CAT));

int countPeopleWithCats =
  this.people
    .count(person -> person.hasPet(PetType.CAT));

MutableList&lt;Person&gt; peopleWithCats =
  this.people
    .select(person -> person.hasPet(PetType.CAT));</pre>
                    </div>
                    <div class="tab-pane fade" id="streams">
                            <pre  class="prettyprint lang-java">
boolean anyPeopleHaveCats =
  this.people
    .stream()
    .anyMatch(person -> person.hasPet(PetType.CAT));

long countPeopleWithCats =
  this.people
    .stream()
    .filter(person -> person.hasPet(PetType.CAT))
    .count();

List&lt;Person&gt; peopleWithCats =
  this.people
    .stream()
    .filter(person -> person.hasPet(PetType.CAT))
    .collect(Collectors.toList());</pre>
                    </div>
                </div>
                <!-- /.tab-content -->
            </div>
            <!-- /.col -->
        </div>
        <!-- /.row -->

    </div>
    <!-- /.container -->

</div>
<!-- Rich and fluent API -->

<div class="content-section-a">

    <div class="container-fluid">

        <div class="row">
            <div class="col-lg-5 col-sm-6">
                <hr class="section-heading-spacer">
                <div class="clearfix"></div>
                <h2 class="section-heading">De nombreux types de conteneurs, incluant les collections immuables et non-immuables, les collections primitives, les ensembles et les multiensembles</h2>
                <p class="lead">Utilisez les nombreux types de conteneurs existants, en vous appuyant sur les méthodes d'instanciation faciles présentes dans les factories .</p>
            </div>
            <div class="col-lg-7 col-sm-6">
                <ul class="nav nav-tabs">
                    <li class="active"><a href="#mutable" data-toggle="tab">Collections Non-Immuables</a></li>
                    <li><a href="#immutable" data-toggle="tab">Collections Immuables</a></li>
                    <li><a href="#primitives" data-toggle="tab">Collections Primitives</a></li>
                </ul>
                <div id="container-types" class="tab-content">
                    <div class="tab-pane fade in active" id="mutable">
                            <pre  class="prettyprint lang-java">
//Initialisation d'une liste non-immuable avec les méthodes empty(), of() et with()
MutableList&lt;String&gt; mutableListEmpty =
  Lists.mutable.empty();
MutableList&lt;String&gt; mutableListOf =
  Lists.mutable.of("One", "One", "Two", "Three");
MutableList&lt;String&gt; mutableListWith =
  Lists.mutable.with("One", "One", "Two", "Three");

//De nombreux types de conteneurs sont disponibles
MutableSet&lt;String&gt; mutableSet =
  Sets.mutable.with("One", "One", "Two", "Three");
MutableBag&lt;String&gt; mutableBag =
  Bags.mutable.with("One", "One", "Two", "Three");
MutableStack&lt;String&gt; mutableStack =
  Stacks.mutable.with("One", "One", "Two", "Three");
MutableMap&lt;String, String&gt; mutableMap =
  Maps.mutable.with("key1", "value1", "key2", "value2", "key3", "value3");
MutableMultimap&lt;String, String&gt; multimapWithList =
  Multimaps.mutable.list.with("key1", "value1-1", "key1", "value1-2", "key2","value2-1");
MutableBiMap&lt;String, String&gt; mutableBiMap =
  BiMaps.mutable.with("key1", "value1", "key2", "value2", "key3", "value3");</pre>
                    </div>
                    <div class="tab-pane fade" id="immutable">
                            <pre  class="prettyprint lang-java">
//Initialisation d'une liste immuable avec les méthodes empty(), of() et with()
ImmutableList&lt;String&gt; immutableListEmpty =
  Lists.immutable.empty();
ImmutableList&lt;String&gt; immutableListOf =
  Lists.immutable.of("One", "One", "Two", "Three");
ImmutableList&lt;String&gt; immutableListWith =
  Lists.immutable.with("One", "One", "Two", "Three");

//De nombreux types de conteneurs sont disponibles
ImmutableSet&lt;String&gt; immutableSet =
  Sets.immutable.with("One", "One", "Two", "Three");
ImmutableBag&lt;String&gt; immutableBag =
  Bags.immutable.with("One", "One", "Two", "Three");
ImmutableStack&lt;String&gt; immutableStack =
  Stacks.immutable.with("One", "One", "Two", "Three");
ImmutableMap&lt;String, String&gt; immutableMap =
  Maps.immutable.with("key1", "value1", "key2", "value2", "key3", "value3");
ImmutableMultimap&lt;String, String&gt; immutableMultimapWithList =
  Multimaps.immutable.list.with("key1", "value1-1", "key1", "value1-2", "key2","value2-1");
ImmutableBiMap&lt;String, String&gt; immutableBiMap =
  BiMaps.immutable.with("key1", "value1", "key2", "value2", "key3", "value3");</pre>
                    </div>
                    <div class="tab-pane fade" id="primitives">
                            <pre  class="prettyprint lang-java">
//Listes (List) immuables ou non-immuables, Ensembles (Sets), Multiensemble (Bags), Piles (Stacks) et Tableaux associatifs (Maps) sont utilisables avec les 8 types primitifs
MutableIntList intList =
  IntLists.mutable.of(1, 2, 3);
MutableLongList longList =
  LongLists.mutable.of(1L, 2L, 3L);
MutableCharList charList =
  CharLists.mutable.of('a', 'b', 'c');
MutableShortList shortList =
  ShortLists.mutable.of((short)1, (short)2, (short)3);
MutableByteList byteList =
  ByteLists.mutable.of((byte)1, (byte)2, (byte)3);
MutableBooleanList booleanList =
  BooleanLists.mutable.of(true, false);
MutableFloatList floatList =
  FloatLists.mutable.of(1.0f, 2.0f, 3.0f);
MutableDoubleList doubleList =
  DoubleLists.mutable.of(1.0, 2.0, 3.0);

//Vous pouvez créer une liste d'entier avec IntInterval
IntInterval oneTo10 =
  IntInterval.fromTo(1, 10); // entiers de 1 à 10
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
IntInterval oneTo10By3 =
  IntInterval.fromToBy(1, 10, 3); // entier de 1 à 10 avec un incrément de 3
// [1, 4, 7, 10]
IntInterval oddsFrom1To10 =
  IntInterval.oddsFromTo(1, 10); // nombres impairs de 1 à 10
// [1, 3, 5, 7, 9]
IntInterval evensFrom1To10 =
  IntInterval.evensFromTo(1, 10); // nombres pairs de 1 à 10
// [2, 4, 6, 8, 10]</pre>
                    </div>
                </div>
                <!-- /.tab-content -->
            </div>
            <!-- /.col -->
        </div>
        <!-- /.row -->

    </div>
    <!-- /.container -->

</div>
<!-- Container Types -->

<a class="anchor" name="memory"></a>
<div class="content-section-b">

    <div class="container-fluid">

        <div class="row">
            <div class="col-lg-push-6 col-lg-6 col-sm-push-6 col-sm-6">
                <hr class="section-heading-spacer">
                <div class="clearfix"></div>
                <h2 class="section-heading">Reduisez votre utilisation de la mémoire <br>avec des conteneurs optimisés</h2>
                <p class="lead">Eclipse Collections vous fournit une implémentation optimisée pour vos ensembles (Sets) et vos tableaux associatifs (Maps), ainsi que vos collections primitives. </p>
            </div>
            <div class="col-lg-pull-6 col-lg-6 col-sm-pull-6 col-sm-6">
                <ul class="nav nav-tabs">
                    <li class="active"><a href="#set" data-toggle="tab">Ensembles (Sets)</a></li>
                    <li><a href="#map" data-toggle="tab">Tableaux associatifs (Maps)</a></li>
                    <li><a href="#ints" data-toggle="tab">Collections primitives</a></li>
                </ul>
                <div id="memory" class="tab-content">
                    <div class="tab-pane fade in active" id="set">
                        <img class="img-responsive" src="../img/set.png" alt="">
                    </div>
                    <div class="tab-pane fade" id="map">
                        <img class="img-responsive" src="../img/map.png" alt="">
                    </div>
                    <div class="tab-pane fade" id="ints">
                        <img class="img-responsive" src="../img/ints.png" alt="">
                    </div>
                </div>
            </div>
        </div>

    </div>
    <!-- /.container -->

</div>
<!-- Memory footprint -->

<a class="anchor" name="learn"></a>
<div class="content-section-a">

    <div class="container-fluid">

        <div class="row">
            <div class="col-lg-5 col-sm-6">
                <hr class="section-heading-spacer">
                <div class="clearfix"></div>
                <h2 class="section-heading">Apprendre les Eclipse Collections avec un Kata</h2>
                <p class="lead">
                    Faites un tour sur les  <a href="https://github.com/eclipse/eclipse-collections-kata">Eclipse Collections Kata</a>, une facon simple et amusante de découvrir le monde des Eclipse Collections.
                    Ces kata ont été concu avec des tests unitaires défaillants.
                    Votre objectif est de les faire réussir, en utilisant les Eclipse Collections.
                </p>
            </div>
            <div class="col-lg-7 col-sm-6">
                <ul class="nav nav-tabs">
                    <li class="active"><a href="#exercise" data-toggle="tab">Exemple d'exercice</a></li>
                    <li><a href="#solution" data-toggle="tab">Exemple de solution</a></li>
                </ul>
                <div class="tab-content">
                    <div class="tab-pane fade in active" id="exercise">
                            <pre  class="prettyprint lang-java">
@Test
public void getFirstNamesOfAllPeople()
{
  MutableList&lt;Person&gt; people = this.people;
  MutableList&lt;String&gt; firstNames = null; //Remplacez null par une méthode sur MutableList.
  MutableList&lt;String&gt; expectedFirstNames =
    Lists.mutable.with("Mary", "Bob", "Ted", "Jake", "Barry", "Terry", "Harry", "John");
  Assert.assertEquals(expectedFirstNames, firstNames);
}</pre>
                    </div>
                    <div class="tab-pane fade" id="solution">
                            <pre  class="prettyprint lang-java">
@Test
public void getFirstNamesOfAllPeople()
{
  MutableList&lt;Person&gt; people = this.people;
  MutableList&lt;String&gt; firstNames = people.collect(Person::getFirstName);
  MutableList&lt;String&gt; expectedFirstNames =
    Lists.mutable.with("Mary", "Bob", "Ted", "Jake", "Barry", "Terry", "Harry", "John");
  Assert.assertEquals(expectedFirstNames, firstNames);
}</pre>
                    </div>
                </div>
                <!-- /.tab-content -->
            </div>
            <!-- /.col -->
        </div>
        <!-- /.row -->

    </div>
    <!-- /.container -->

</div>
<!-- Kata -->

<a class="anchor" name="history"></a>
<div class="content-section-b">

    <div class="container-fluid">

        <h2 class="section-heading">Origine des Eclipse Collections</h2>
        <p class="lead">
            Les premières versions des Eclipse Collections ont été crée en tant qu'une librairie de collections nommée Caramel à Goldman Sachs en 2004.

            Depuis, la plateforme a évolué, et en 2012, elle a été partagé sur Github sous le nom de
            <a href="https://github.com/goldmansachs/gs-collections">GS Collections</a>.
            <br><br>
            GS Collections a été présente durant plusieurs
            <a href="https://github.com/eclipse/eclipse-collections/wiki/Conference-talks-and-meetups">évènements</a>
            incluant le JVM Summit de 2012 et JavaOne de 2014.
            Une comparaison des performances entre les implemtations des évaluations paresseuses de Java 8, Scala et de GS a été présenté au
            <a href="http://www.infoq.com/presentations/java-streams-scala-parallel-collections">QCon New York</a> en 2014.
            Aussi, un <a href="https://github.com/eclipse/eclipse-collections/wiki/Articles">article</a> sur les GS Collections
            (<a href="http://www.infoq.com/articles/GS-Collections-by-Example-1">Partie 1</a> /
            <a href="http://www.infoq.com/articles/GS-Collections-by-Example-2">Partie 2</a>)
            a éte publié sur InfoQ.com
            montrant les capacités de cette librairie à travers des exemples et des interviews des créateurs des GS Collections.
            <br><br>

            Au fil des années, environ 40 developpeurs provenant de la même société ont contribué à cette librairie.
            <br><br>

            Pour permettre une meilleure utilisation de la communauté Open Source, GS Collections a été migré dans la Fondation Eclipse et re-nommé en Eclipse Collections en 2015.
            Maintenant, la librairie est totalement ouverte vers la communauté, n'attendant plus que votre contribution!
        </p>
    </div>
</div>
<!-- History  -->

<a class="anchor" name="refGuide"></a>
<div class="content-section-a">
    <div class="container-fluid">
        <h2 class="section-heading">Guide de référence</h2>
        <p class="lead">
            Un guide complet de référence sur la librairie est accessible sur GitHub:
            <a href="https://github.com/eclipse/eclipse-collections/blob/master/docs/guide.md#eclipse-collections-reference-guide">Guide de Référence (en Anglais)</a>.
        </p>
    </div>
    <!-- /.container -->

</div>
<!-- Reference Guide  -->

<a class="anchor" name="sourceCode"></a>
<div class="content-section-b">
    <div class="container-fluid">
        <h2 class="section-heading">Code Source</h2>
        <p class="lead">
            Le code source est accessible sur GitHub: <a href="https://github.com/eclipse/eclipse-collections">Eclipse Collections</a>.
        </p>
    </div>
    <!-- /.container -->
</div>
<!-- Source Code  -->

<a class="anchor" name="contribute"></a>
<div class="content-footer">

    <div class="container-fluid">

        <div class="row">
            <div class="col-lg-4 col-sm-4">
                <h3>Contribuer</h3>
                <p class="regular">
                    Tout contributeur est le bienvenu !
                    <br><br>
                    Le futur des Eclipse Collections est accessible <a href="https://github.com/eclipse/eclipse-collections/wiki/Roadmap">ici</a>.
                    <br><br>
                    Pour contribuer, il vous suffit juste de faire un pull request sur GitHub.
                    La section <a href="https://github.com/eclipse/eclipse-collections/blob/master/CONTRIBUTING.md">Contribuer </a> est le meilleur moyen de commencer.
                </p>
            </div>
            <div class="col-lg-4 col-sm-4">
                <h3>Versions les plus récentes</h3>
                <p class="regular">Eclipse Collections 10.0.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/10.0.0">delivré le</a> <a class="light">(Juil 10 2019)</a></p>
                <p class="regular">Eclipse Collections 9.2.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/9.2.0">delivré le</a> <a class="light">(Mai 20 2018)</a></p>
                <p class="regular">Eclipse Collections 9.1.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/9.1.0">delivré le</a> <a class="light">(Janv 1 2018)</a></p>
                <p class="regular">Eclipse Collections 9.0.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/9.0.0">delivré le</a> <a class="light">(Sept 21 2017)</a></p>
                <p class="regular">Eclipse Collections 8.2.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/8.2.0">delivré le</a> <a class="light">(Juin 22 2017)</a></p>
                <p class="regular">Eclipse Collections 8.1.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/8.1.0">delivré le</a> <a class="light">(Mars 16 2017)</a></p>
                <p class="regular">Eclipse Collections 8.0.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/8.0.0">delivré le</a> <a class="light">(Sept 8 2016)</a></p>
            </div>
            <div class="col-lg-4 col-sm-4">
                <h3>Liens</h3>
                <p class="regular">Eclipse PMI: <a href="https://projects.eclipse.org/projects/technology.collections">Infraestrutura de gerenciamento de projetos Eclipse</a></p>
                <p class="regular">GitHub: <a href="https://github.com/eclipse/eclipse-collections">eclipse-collections</a></p>
                <p class="regular">Issues: <a href="https://github.com/eclipse/eclipse-collections/issues">GitHub issues</a></p>
                <p class="regular">Liste de diffusion: <a href="https://dev.eclipse.org/mailman/listinfo/collections-dev">collections-dev</a> </p>
                <p class="regular">Wiki: <a href="https://github.com/eclipse/eclipse-collections/wiki">GitHub wiki</a></p>
                <p class="regular">Forum: <a href="https://www.eclipse.org/forums/index.php?t=thread&amp;frm_id=329">Eclipse Collections Forum</a></p>
                <p class="regular">StackOverflow: taggez avec <a href="http://stackoverflow.com/questions/tagged/eclipse-collections">eclipse-collections</a></p>
            </div>
            <!-- /.col -->
        </div>
        <!-- /.row -->

    </div>
    <!-- /.container -->

</div>
<!-- Container Types -->


<div class="banner">

    <div class="container-fluid">

        <div class="row">
            <div class="col-lg-12">
                <h3>- Plus de fonctionnalités, moins de soucis -</h3>
            </div>
        </div>

    </div>
    <!-- /.container -->

</div>
<!-- /.banner -->

<!-- Footer -->
<footer>
    <div class="container-fluid">
        <div class="row">
            <div class="col-lg-12">
                <ul class="list-inline">
                    <li>
                        <p class="copyright text-muted small">Copyright &copy; 2018 The Eclipse Foundation. All Rights Reserved. </p>
                    </li>
                    <li class="footer-menu-divider">&sdot;</li>
                    <li>
                        <a class="small" href="http://www.eclipse.org">Eclipse Foundation</a>
                    </li>
                    <li class="footer-menu-divider">&sdot;</li>
                    <li>
                        <a class="small" href="http://www.eclipse.org/legal">Legal</a>
                    </li>
                    <li class="footer-menu-divider">&sdot;</li>
                    <li>
                        <a class="small" href="http://www.eclipse.org/legal/privacy.php">Privacy</a>
                    </li>
                    <li class="footer-menu-divider">&sdot;</li>
                    <li>
                        <a class="small" href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a>
                    </li>
                    <li class="footer-menu-divider">&sdot;</li>
                    <li>
                        <a class="small" href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</footer>

<!-- jQuery -->
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>

<!-- Bootstrap Core JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha256-KXn5puMvxCw+dAYznun+drMdG1IFl3agK0p/pqT9KAo= sha512-2e8qq0ETcfWRI4HJBzQiA3UoyFk6tbNyG+qSaIBZLyW9Xf3sWZHN/lxe9fTh1U45DpPf07yj94KsUHHWe4Yk1A==" crossorigin="anonymous"></script>

<!-- Google Code Prettify -->
<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?skin=sunburst"></script>
</body>

</html>
