Например, можно ли создать ряд четных чисел в guava? Что-то вроде:guava смежный диапазон по правилу
Range.closed(0,10) //0,2,4,6,8,10
Я понимаю, что линия выше, не будет производить нужен выход, но что-то подобное может быть:
Range.closed(0,10, SomeFunctionInterface<Integer>);
где
interface SomeFunctionInterface<T>{
T computeNext(T first);
}
Возможно ли в гуавы? Это все еще смежный диапазон, только что на него применяется определенное правило.
Меня интересует только решение guava.
«Это все еще смежный диапазон, только что на него применяется определенное правило». Не верно, потому что это диапазон 'Integer' и 0 и 2 и т. Д. Не являются непрерывными объектами Integer. Если вы должны были создать тип «EvenInteger» и «DiscreteDomain» (обратите внимание: не делайте этого), я думаю, это может быть смежный диапазон этого типа. «Диапазон» Guava ожидает, что будет один канонический способ сравнения каждого типа Java, который вы хотите использовать с ним, а «ContiguousSet» ожидает один канонический «DiscreteDomain». –
ColinD
@ColinD, вы заставили меня переосмыслить это, и я думаю, что это абсолютно правильно. – Eugene
Из javadoc: 'Диапазоны * выпуклые: *, когда два значения содержатся, все значения между ними также должны содержаться. Более формально для любого 'c1 <= c2 <= c3' типа' C', 'r.contains (c1) && r.contains (c3)' подразумевает 'r.contains (c2)'. Это означает, что 'Range' никогда не может использоваться для представления, скажем, «всех простых чисел от 1 до 100». ' –