<!DOCTYPE html>
<!--
  ~ Copyright (c) 2018 Goldman Sachs and others
  ~ 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="de">

<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 - Features, die du möchtest, mit Collections, die du brauchst.</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">Einführung</a>
                    </li>
                    <li>
                        <a href="#concept">Konzept</a>
                    </li>
                    <li>
                        <a href="#learn">Lernen</a>
                    </li>
                    <li>
                        <a href="#history">Geschichte</a>
                    </li>
                    <li>
                        <a href="#refGuide">Reference Guide</a>
                    </li>
                    <li>
                        <a href="#sourceCode">Source Code</a>
                    </li>
                    <li>
                        <a href="#contribute">Contribute</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.1.0">10.1.0</a></li>
                            <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">Sprachen<span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="../index.html">English</a></li>
                            <li><a href="">Deutsch</a></li>
                            <li><a href="../es/index.html">Español</a></li>
                            <li><a href="../cn/index.html">中文</a></li>
                            <li><a href="../fr/index.html">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>- Features, die du möchtest, mit Collections, die du brauchst -</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">Einführung in die <br>Eclipse Collections</h2>
                    <p class="lead">Eclipse Collections ist das beste Java Collections Framework, um Freude
                        in die Java Entwicklung zu bringen.
                        <br><br>Integriere es heute noch in deinen Source Code mit deinem favorisierten Build-Tool!</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">Download</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.1.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.1.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.1.0'
compile 'org.eclipse.collections:eclipse-collections:10.1.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.1.0" /&gt;
&lt;dependency org="org.eclipse.collections" name="eclipse-collections" rev="10.1.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.1.0">eclipse-collections-api-10.1.0.jar</a>
<a target="_blank" href="http://mvnrepository.com/artifact/org.eclipse.collections/eclipse-collections/10.1.0">eclipse-collections-10.1.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">Umfangreiche, saubere und lesbare APIs</h2>
                    <p class="lead">Maximiere die Möglichkeiten von Java 8 Lambda Expressions und Methoden Referenzen
                        durch die umfangreichen APIs der Eclipse 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">Eclipse Collections mit Methoden Referenzen</a></li>
                        <li><a href="#ec" data-toggle="tab">Eclipse Collections mit Lambdas</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">Enthält umfangreiche Strukturen: <br>Unveränderliche Collections, Primitive Collections, BiMaps, MultiMaps und Bags</h2>
                    <p class="lead">Nutze verschiedenste Daten-Container mit nützlichen Factory-Methoden zur Erzeugung.</p>
                </div>
                <div class="col-lg-7 col-sm-6">
                    <ul class="nav nav-tabs">
                        <li class="active"><a href="#mutable" data-toggle="tab">Veränderliche Collections</a></li>
                        <li><a href="#immutable" data-toggle="tab">Unveränderliche Collections</a></li>
                        <li><a href="#primitives" data-toggle="tab">Primitive Collections</a></li>
                    </ul>
                    <div id="container-types" class="tab-content">
                        <div class="tab-pane fade in active" id="mutable">
                            <pre  class="prettyprint lang-java">
//Initialisierung von Listen mit den empty(), of(), with() Methoden
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");

//Verschiedenste Container-Typen verfügbar
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">
//Initialisierung von unveränderlichen Listen mit den empty(), of(), with() Methoden
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");

//Verschiedenste Kontainertypen verfügbar
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">
//Veränderliche und unveränderliche Listen, Sets, Bags, Stacks und Maps
//sind verfügbar für alle 8 primitiven Datentypen
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);

//Zahlenreichen können mit IntInterval erstellt werden
IntInterval oneTo10 =
  IntInterval.fromTo(1, 10); // ints von 1 bis 10
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
IntInterval oneTo10By3 =
  IntInterval.fromToBy(1, 10, 3); // ints von 1 bis 10 in 3 Sprüngen
// [1, 4, 7, 10]
IntInterval oddsFrom1To10 =
  IntInterval.oddsFromTo(1, 10); // ungerade ints von 1 bis 10
// [1, 3, 5, 7, 9]
IntInterval evensFrom1To10 =
  IntInterval.evensFromTo(1, 10); // gerade ints von 1 bis 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">Reduziert den Speicherverbrauch<br>mit speichereffizienten Daten-Containern.</h2>
                    <p class="lead">Eclipse Collections bietet effiziente Implementierungen von Sets und Maps, sowie Primitive Collections. </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">Sets</a></li>
                        <li><a href="#map" data-toggle="tab">Maps</a></li>
                        <li><a href="#ints" data-toggle="tab">Primitive Collections</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">Lerne die Eclipse Collections mit Kata</h2>
                    <p class="lead">
                        Probiere das <a href="https://github.com/eclipse/eclipse-collections-kata">Eclipse Collections Kata</a> -
                        die beste Möglichkeit, um die Nutzung der Eclipse Collections zu erlernen.
                        Ein Kata ist eine Serie von fehlschlagenden Unit-Tests.
                        Deine Aufgabe ist es, die Tests mit den Eclipse Collections zu lösen.
                    </p>
                </div>
                <div class="col-lg-7 col-sm-6">
                    <ul class="nav nav-tabs">
                        <li class="active"><a href="#exercise" data-toggle="tab">Beispiel Aufgabe</a></li>
                        <li><a href="#solution" data-toggle="tab">Beispiel Lösung</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; //Ersetze null mit einer Transformation der 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">Geschichte der Eclipse Collections</h2>
            <p class="lead">
                Die Basis der Eclipse Collections war ein Framework namens Caramel, welches 2004 bei Goldman Sachs entstand.

                Das Framework entwickelte sich durch aktive Nutzung weiter und wurde 2012 als Open Source Projekt als GitHub
                Projekt unter dem Namen <a href="https://github.com/goldmansachs/gs-collections">GS Collections</a> veröffentlicht.
                <br><br>
                GS Collections wurde danach bei einer Reihe von
                <a href="https://github.com/eclipse/eclipse-collections/wiki/Conference-talks-and-meetups">Konferenzen</a>,
                inklusive dem JVM Summit 2012 und der JavaOne in 2014, präsentiert.
                Ein Geschwindigkeitsvergleich zwischen den parallelen Collections von Java 8, Scala und GS Collections wurde auf der
                <a href="http://www.infoq.com/presentations/java-streams-scala-parallel-collections">QCon New York</a> in 2014 präsentiert.
                <a href="https://github.com/eclipse/eclipse-collections/wiki/Articles">Artikel</a> über die GS Collections
                (<a href="http://www.infoq.com/articles/GS-Collections-by-Example-1">Teil 1</a> /
                <a href="http://www.infoq.com/articles/GS-Collections-by-Example-2">Teil 2</a>)
                wurden auch auf InfoQ.com veröffentlicht, welche die Fähigkeiten des Collections Framework durch Beispiele aufzeigen.
                Weiterhin sind Interviews mit den Entwicklern der GS Collections vorhanden.
                <br><br>

                Über die Jahre haben sich rund 40 Entwickler an der Entwicklung der Eclipse Collections beteiligt.
                <br><br>

                Zur Vervollständigung des Open Source Gedankens wurden die GS Collections in 2015 der Eclipse Foundation
                übertragen und in Eclipse Collections umbenannt.
                Damit ist das Collections Framework heute komplett Open Source und freut sich auf deine Mithilfe.
            </p>
        </div>
    </div>
    <!-- History  -->

    <a class="anchor" name="refGuide"></a>
    <div class="content-section-a">
        <div class="container-fluid">
            <h2 class="section-heading">Reference Guide</h2>
            <p class="lead">
                Eine umfassende Anleitung ist auf GitHub verfügbar:
                <a href="https://github.com/eclipse/eclipse-collections/blob/master/docs/guide.md#eclipse-collections-reference-guide">Reference Guide</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">Source Code</h2>
            <p class="lead">
                Der Source Code ist auf GitHub verfügbar: <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>Contribute</h3>
                    <p class="regular">
                        Wir freuen uns auf deine Mithilfe!
                        <br><br>
                        Die Eclipse Collections Projekt Roadmap kann <a href="https://github.com/eclipse/eclipse-collections/wiki/Roadmap">hier</a> gefunden werden.
                        <br><br>
                        Beiträge können als Pull Request auf GitHub eingereicht werden.
                        Eine Anleitung ist unter <a href="https://github.com/eclipse/eclipse-collections/blob/master/CONTRIBUTING.md">How To Contribute</a> verfügbar.
                    </p>
                </div>
                <div class="col-lg-4 col-sm-4">
                    <h3>Letzte Versionen</h3>
                    <p class="regular">Eclipse Collections 10.1.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/10.1.0">released</a> <a class="light">(Dec 4th 2019)</a></p>
                    <p class="regular">Eclipse Collections 10.0.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/10.0.0">released</a> <a class="light">(Jul 10th 2019)</a></p>
                    <p class="regular">Eclipse Collections 9.2.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/9.2.0">released</a> <a class="light">(May 20th 2018)</a></p>
                    <p class="regular">Eclipse Collections 9.1.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/9.1.0">released</a> <a class="light">(Jan 1st 2018)</a></p>
                    <p class="regular">Eclipse Collections 9.0.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/9.0.0">released</a> <a class="light">(Sep 21nd 2017)</a></p>
                    <p class="regular">Eclipse Collections 8.2.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/8.2.0">released</a> <a class="light">(Jun 22nd 2017)</a></p>
                    <p class="regular">Eclipse Collections 8.1.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/8.1.0">released</a> <a class="light">(Mar 16th 2017)</a></p>
                    <p class="regular">Eclipse Collections 8.0.0 <a href="https://github.com/eclipse/eclipse-collections/releases/tag/8.0.0">released</a> <a class="light">(Sep 8th 2016)</a></p>
                </div>
                <div class="col-lg-4 col-sm-4">
                    <h3>Community Links</h3>
                        <p class="regular">Eclipse PMI: <a href="https://projects.eclipse.org/projects/technology.collections">eclipse project management infrastructure</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">Mailing lists: <a href="https://dev.eclipse.org/mailman/listinfo/collections-dev">collections-dev</a> mailing list</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: tag with <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>- Mehr Features, weniger Verlust -</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>
