Create a stream of the values in maps that are values in another map in Java
<p>Sorry about the title of the question; it was kind of hard for me to make sense of it.  If you guys have a better title, let me know and I can change it.</p>

<p>I have two types of objects, Bookmark and Revision.  I have one large Map, like so:</p>

<pre><code>Map&lt;Long, Bookmark&gt; mapOfBookmarks;
</code></pre>

<p>it contains key: value pairs like so:</p>

<pre><code>1L: Bookmark1,
2L: Bookmark2,
...
</code></pre>

<p>Each Bookmark has a 'getRevisions()' method that returns a Map</p>

<pre><code>public Map&lt;Long, Revision&gt; getRevisions();
</code></pre>

<p>I want to create a Stream that contains all revisions that exist under mapOfBookmarks.  Essentially I want to do this:</p>

<pre><code>List&lt;Revision&gt; revisions = new ArrayList&lt;&gt;();
for (Bookmark bookmark : mapOfBookmarks.values()) { // loop through each bookmark in the map of bookmarks ( Map&lt;Long, Bookmark&gt; )
    for (Revision revision : bookmark.getRevisions().values()) { // loop through each revision in the map of revisions ( Map&lt;Long, Revision&gt; )
        revisions.add(revision);  // add each revision of each map to the revisions list
    }
}
return revisions.stream(); // return a stream of revisions
</code></pre>

<p>However, I'd like to do it using the functionality of Stream, so more like:</p>

<pre><code>return mapOfBookmarks.values().stream().everythingElseThatIsNeeded();
</code></pre>

<p>Which would essentially be like saying:</p>

<pre><code>return Stream.of(revision1, revision2, revision3, revision4, ...);
</code></pre>

<p>How would I write that out? Something to note is that the dataset that it is looping through can be huge, making the list method a poor approach.</p>

<p>I'm using Windows 7 and Java 8</p>