Простое решение может состоять в том, чтобы оставить слова одинаковой длины:
var katas = input.split(' ');
var maxLength = katas.map((e) => e.length).reduce(max);
katas = katas.map((e) => e.padLeft(maxLength)).toList();
Проект Time&Money, кажется, имеет класс Интервала, в котором Вы нуждаетесь.
Посмотрите эти файлы в их svn: пакет интервала.
Проект Ленга свободного городского населения Apache (http://commons.apache.org/lang/) содержит классы, имеющие дело с диапазонами (как IntRange - https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/math/IntRange.html). Я не уверен, что это удовлетворяет все Ваши потребности, но это могло бы стоить проверить.
Я не знаю ни о каких классах библиотеки, но я вспоминаю скорее тривиально запись таких классов.