Guava has a lot of stuff, but some highlights:

  • Optional<T> type
  • Immutable collections (List, Set, Map, etc.)
  • More collections:
    • Multiset: set that allows multiples
    • Multimap: map for unique values to a collection of values
    • BiMap: reversable map
  • Graphs
  • Caches
    • LoadingCache: use a CacheLoader to load the cache; all gets will block until the cache is loaded.
    • Eviction based on size/time. Also by (weak) references.
  • Bloom filters
  • Event bus: multiple producers/consumers can communicate via the event bus (and not necessarily know about each other)