Где найти основные предикаты, такие как «БестТан для Гуавы»? - PullRequest
8 голосов
/ 02 апреля 2011

Я использую библиотеку guava и заметил, что очень полезный Predicate не определен - "больше чем".Есть ли другое место, где я должен искать базовые предикаты, подобные этому, или я обречен на создание своего собственного фляги функциональной поддержки, включающей такие вещи, и импортирование его во все мои проекты?Есть ли причина, по которой они не включили бы это, но нашли бы время, чтобы сделать кучу других предикатов (в классе Предикатов)?

Ответы [ 4 ]

15 голосов
/ 23 апреля 2011

Диапазон и Диапазоны (обновление: статические методы на Ranges были добавлены в Range по состоянию на Guava 14.0), теперь добавленыдля r10.Вы сможете просто:

Iterable<Integer> positive = Iterables.filter(numbers, Range.greaterThan(0));

Range s иметь много других мощных функций, включая возможность просматривать Range как непрерывный ImmutableSortedSet в дискретном домене:

ContiguousSet<Integer> oneToOneHundred = ContiguousSet.create(
    Range.closed(1, 100), DiscreteDomains.integers());

Я только что показал Integer с, но материал Range работает для любых Comparable.ContiguousSet требуется DiscreteDomain для типа ... Guava предоставляет DiscreteDomain.integers(), .longs() и .bigIntegers() на данный момент.

7 голосов
/ 03 апреля 2011

Благодаря интерфейсу Predicate и различным утилитам для фильтрации коллекций с помощью предиката, Guava предоставляет ядро, на котором вы можете строить.

Класс Predicates позволяет создавать некоторые часто используемые предикаты. Я полагаю, что вы могли бы сделать запрос на улучшение в трекере проблем, как предложил Майк, но я не уверен, что они добавят его, поскольку Гуава стремится к высокому соотношению мощности к весу.

Если бы они добавили предикат "greatThan", им также нужно было бы добавить "moreOrEqualThan", "lesserThan", "lesserOrEqualThan" ... Это было бы полезно, но для API это слишком много. Предикат, который занимает только одну строку для реализации. Хотя стоит попробовать.

Лучшим решением может быть проект с открытым исходным кодом, расширяющий Guava всеми функциональными возможностями, которые недоступны в самой Guava. Мы можем назвать это «остатками гуавы» или что-то в этом роде;) Или, может быть, попросить проект Biscotti добавить такие служебные методы (у них уже есть некоторая функциональность «приятно иметь», которой нет в Гуаве). 1011 *

7 голосов
/ 05 апреля 2011

Ранее я запрашивал эту функцию и был упомянут этой проблемы .По-видимому, эта функциональность будет реализована через диапазоны, которые будут реализовывать Predicate.

1 голос
/ 02 апреля 2011

Predicates собирает некоторые общие предикаты, но не больше единицы.Я не думаю, что гуава дает такую ​​вещь.Вы можете попробовать отправить запрос об ошибке / функции на сайте проекта guava: http://code.google.com/p/guava-libraries/issues/list

...