Craig P. Motlin
Craig P. Motlin
###### Problem: We use non-abbreviated conversion words in our logFormat. `%highlight(%-5level) %green(%logger): %message%n%red(%rootException)` Most abbreviations and longer forms work interchangeably (like `%c` and `%logger`) However, switching between the abbreviations and...
I was code reviewing changes related to multi-reader collections and I noticed that they're missing a bunch of overrides. These changes are not technically backwards compatible. I don't know if...
It's been a while since we turned on additional IntelliJ inspections. There are many newly created inspections that are worth adding. Older inspections that were buggy have been fixed or...
We're missing symmetry. This exists and works: ```java SortedBags.mutable.empty(comparator); ``` But these don't exist. ```java SortedMaps.mutable.empty(comparator); SortedSets.mutable.empty(comparator); ```
```java MapIterable collectKeysUnique(Function2
Reduce code duplication by making a few classes extend AbstractRichIterable, including: * ImmutableArrayStack * primitiveObjectHashMap * abstractImmutablePrimitiveObjectMap * immutablePrimitiveObjectHashMap * MutablePrimitiveObjectMap
* Pre-size TreeSortedMap.take/drop. * Pre-size AbstractMutableSortedMap.zip. * Don't pre-size AbstractMutableSortedMap.select/reject/collectIf.
Implement unmodifiable Multimap wrappers like `UnmodifiableMutableListMultimap`, `UnmodifiableMutableSetMultimap`, etc. Implement `MutableMultimap asUnmodifiable();` in `MutableMultimap` and covariant overrides like `MutableListMultimap asUnmodifiable();` in `MutableListMultimap`. All interfaces that extend `MutableMultimap` should have an override,...
The existing method `RichIterable.aggregateBy(Function, Function0, Function2)` is conceptually a `groupBy()` followed by `injectInto()` on each group of values. This method would be a `groupBy` followed by `reduce()` on each group...
When iterating through a ChainedBucket, every item was a collision before shrinking and will remain a collision after shrinking. Instead of repeatedly looking up the ChainedBucket and iterating to the...