blob: 25d4d3fe1052e405b99f41673405b92616c49d95 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<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="">
<title>Eclipse Collections - Happy development with the best Java collections framework ever. </title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/landing-page.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
<!-- Google Code Prettify -->
<link href="google-code-prettify/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]-->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-71645852-1', 'auto');
ga('send', 'pageview');
</script>
</head>
<body onload="prettyPrint()">
<!-- 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>
<a class="navbar-brand topnav" href="#">Eclipse Collections</a>
</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">Get Started</a>
</li>
<li>
<a href="#concept">Concept</a>
</li>
<li>
<a href="#history">History</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">Language <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="">English</a></li>
<li><a href="ja/index.html">Japanese</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<!-- Header -->
<a 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 Collections</h1>
<h3>- Happy development with the best Java collections framework ever -</h3>
</div>
</div>
<div class="col-lg-push-2 col-lg-2">
<a href="https://projects.eclipse.org/projects/technology.collections">
<img class="img-responsive" src="img/Egg-incubation.png" alt="Eclipse Incubation Egg">
</a>
</div>
</div>
</div>
<!-- /.container -->
</div>
<!-- /.intro-header -->
<!-- Page Content -->
<a 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">Get started with <br>Eclipse Collections</h2>
<p class="lead">Eclipse Collections is the best Java collections framework ever
that brings happiness to your Java development.
<br><br>Integrate it to your codebase today with your favorite build tools!</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;7.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;7.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:7.0.0'
compile 'org.eclipse.collections:eclipse-collections:7.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="7.0.0" /&gt;
&lt;dependency org="org.eclipse.collections" name="eclipse-collections" rev="7.0.0" /&gt;</pre>
</div>
<div class="tab-pane fade" id="download">
<pre class="prettyprint">
<a href="">eclipse-collections-api-7.0.0.jar</a>
<a href="">eclipse-collections-7.0.0.jar</a></pre>
</div>
</div>
</div>
</div>
</div>
<!-- /.container -->
</div>
<!-- Get Started -->
<a 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">Rich, Concise and Readable APIs</h2>
<p class="lead">Maximize the power of Java 8 Lambda expressions and method references with
rich APIs directly available on your 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 w/ Method Ref</a></li>
<li><a href="#ec" data-toggle="tab">Eclipse Collections w/ Lambda expression</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">More container types, <br>mutable, immutable, primitives, <br>all available to you.</h2>
<p class="lead">You can make use of various container types, with leveraging handy factory methods to instantiate.</p>
</div>
<div class="col-lg-7 col-sm-6">
<ul class="nav nav-tabs">
<li class="active"><a href="#mutable" data-toggle="tab">Mutable collections</a></li>
<li><a href="#immutable" data-toggle="tab">Immutable 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">
//Initializing mutable list with empty(), of(), with() method
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");
//Various container types available
MutableSet&lt;String&gt; mutableSet
= Sets.mutable.with("One", "One", "Two", "Three");
MutableBag<&lt;tring&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");</pre>
</div>
<div class="tab-pane fade" id="immutable">
<pre class="prettyprint lang-java">
//Initializing immutable list with empty(), of(), with() method
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");
//Various container types available
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; immultimapWithList
= Multimaps.immutable.list.with("key1", "value1-1", "key1", "value1-2", "key2","value2-1");</pre>
</div>
<div class="tab-pane fade" id="primitives">
<pre class="prettyprint lang-java">
//Mutable and immutable Lists, Sets, Bags, Stacks and Maps are available for all 8 primitive types
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);
//You can created a ranged ints with IntInterval
IntInterval oneTo10
= IntInterval.fromTo(1, 10); // ints from 1 to 10
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
IntInterval oneTo10By3
= IntInterval.fromToBy(1, 10, 3); // ints from 1 to 10 step by 3
// [1, 4, 7, 10]
IntInterval oddsFrom1To10
= IntInterval.oddsFromTo(1, 10); // odd ints from 1 to 10
// [1, 3, 5, 7, 9]
IntInterval evensFrom1To10
= IntInterval.evensFromTo(1, 10); // even ints from i to 10
// [2, 4, 6, 8, 10]</pre>
</div>
</div>
<!-- /.tab-content -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container -->
</div>
<!-- Container Types -->
<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">Reduce memory footprint <br>with memory efficient containers.</h2>
<p class="lead">Eclipse Collections provides memory efficient implementation of Sets, Maps and all 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 name="history"></a>
<div class="content-section-a">
<div class="container-fluid">
<h2 class="section-heading">History of Eclipse Collections</h2>
<p class="lead">
Eclipse Collections started off as an open source project on GitHub called
<a href="https://github.com/goldmansachs/gs-collections">GS Collections</a> in 2012.
<br><br>
GS Collections has been presented at number of
<a href="https://github.com/eclipse/eclipse-collections/wiki/Conference-talks-and-meetups">conferences</a>
including JVM Summit in 2012 and JavaOne in 2014.
A performance comparison between the parallel lazy implementations of Java 8, Scala and GS Collections was presented at
<a href="http://www.infoq.com/presentations/java-streams-scala-parallel-collections">QCon New York</a> in 2014.
<br><br>
There are <a href="https://github.com/eclipse/eclipse-collections/wiki/Articles">articles</a> on InfoQ.com
showing some of the capabilities of the collections framework through examples, and also interviews to the creator of GS Collections.
<br><br>
To maximize the best nature of open source project, GS Collections has been migrated to Eclipse Foundation, re-branded as Eclipse Collections in 2015.
</p>
<hr class="section-heading-spacer">
</div>
<!-- /.container -->
</div>
<!-- Introduction -->
<a 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">
We welcome contributions to the Eclipse Collections project!!
<br><br>
Eclipse Collections Project Roadmap can be found <a href="https://github.com/eclipse/eclipse-collections/wiki/Roadmap">here</a>.
<br><br>
The Eclipse Collections project accepts contributions via pull requests in this GitHub.
Please see <a href="https://github.com/eclipse/eclipse-collections/blob/master/CONTRIBUTING.md">How To Contribute</a> for more detail.
</p>
</div>
<div class="col-lg-4 col-sm-4">
<h3>Latest News</h3>
<p class="regular">Eclipse Collections 7.0.0 released <a class="light">(Jan 20th 2016)</a></p>
<p class="regular">Eclipse Collections was presented at
<a href="http://www.java-users.jp/?page_id=2064#GH-4">
JJUG CCC 2015 Fall
</a>
<a class="light">(Nov 28th 2015)</a>
</p>
<p class="regular">Eclipse Collections was presented at
<a href="https://www.eclipsecon.org/europe2015/session/eclipse-collections-example">
EclipseCon Europ 2015
</a>
<a class="light">(Nov 5th 2015)</a>
</p>
<p class="regular">Eclipse Collections was presented at
<a href="https://events.rainfocus.com/oow15/catalog/oracle.jsp?event=javaone&search=CON1091&search.event=javaoneEvent&search.day=20151029">
JavaOne 2015 San Francisco
</a>
<a class="light">(Oct 28th 2015)</a>
</p>
</div>
<div class="col-lg-4 col-sm-4">
<h3>Community Links</h3>
<p class="regular">Eclipse PME: <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>- Happy development with the best Java collections framework ever -</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; 2016 The Eclipse Foundation. All Rights Reserved. </p>
</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</a>
</li>
</ul>
</div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="js/jquery.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script>
<!-- Google Code Prettify -->
<script type="text/javascript" src="google-code-prettify/prettify.js "></script>
</body>
</html>