Implementing feature hashing using guava
Simplified code:

List&lt;Double&gt; guavaCollisions = Arrays.stream(hashDimensions)
    .map(dimension -&gt; {
        HashFunction hashFunction = Hashing.murmur3_32(runif.sample());
        Map&lt;Integer, Long&gt; guavaCounts = Arrays.stream(runif.sample(sampleSize))
            .collect(Collectors.groupingBy(key -&gt; Hashing.consistentHash(hashFunction.hashInt(key), dimension),
                 Collectors.counting());
        return guavaCounts.values().stream().mapToLong(id -&gt; id).average().getAsDouble();
    }).collect(Collectors.toList());


Reasoning:


Inlined the seed. Keeping the seed variable there isn't necessary since we don't use it anymore, not even in the logging-statement.
Used collect instead of forEach(el -&gt; collection.add(el)) to create Collections which is more idiomatic. 
Dropped the Set&lt;Integer&gt; from the Map, since we don't actually ever use the Integers we keep in memory here, but instead only want the number of unique integers. (Note that currently I don't check for uniqueness, which means the semantics changed)
Simplified the calculation of average from guavaCounts by not streaming the entry-set and then mapping to value, which could be simplified by using Entry::getValue, but directly streaming the values(). 
Dropped the System.out because it's incredibly slow in comparison, a side-effect that shouldn't be happening in a Stream and doesn't add viable information to the "final" result of the code.
Renamed hds, hd and hf because shortening names is pointless. I'd have preferred to also rename runif, but didn't find a better name, which would remain succinct.