> On Sep 2, 2026, at 7:40 AM, John Bossons <[email protected]> wrote:
>
> Sorry, I should have made it clear that I was referring to fixed-length
> small strings, such as country-specific postal codes.
If you want to minimize the memory footprint of a fixed-length alphanumeric
code, here’s a tool you can use today:
value class Alphanum6 implements Comparable<Alphanum6> {
int bits;
public Alphanum6(String code) {
if (code.length() != 6) throw new IllegalArgumentException();
bits = Integer.parseUnsignedInt(code, 36);
}
public String code() { return Integer.toUnsignedString(bits,
36).toUpperCase(); }
public String toString() { return code(); }
public int compareTo(Alphanum6 that) { return
Integer.compareUnsigned(this.bits, that.bits); }
}
Extra work would be needed to support additional characters, including spaces
or variable lengths (encoded as trailing <nothing> characters). But something
in the same spirit could work for a variety of different length-limited string
types.
How does performance compare to Strings? Really depends on how it gets used.
That would be an interesting experiment for a real application.
Tools like this may eventually find a home in the standard library, but for now
we (as a community) are really in the experimental phase. It’s unclear what the
most important tools will turn out to be.