Перейти к основному содержимому

Поваренная книга коллекций Hamcrest

· 2 мин. чтения

Задача: Медиана двух отсортированных массивов

Даны два отсортированных массива размерами n и m. Найдите медиану слияния этих двух массивов.
Временная сложность решения должна быть O(log(m + n)) ...

ANDROMEDA

1. Введение

Эта кулинарная книга иллюстрирует, как использовать сопоставители Hamcrest для работы с коллекциями и их тестирования .

Формат поваренной книги ориентирован на примеры и практичен – никаких лишних деталей и объяснений не требуется.

Во-первых, давайте сделаем быстрый статический импорт, чтобы охватить большинство служебных API, которые мы собираемся использовать дальше:

import static org.hamcrest.Matchers.*;

2. Поваренная книга

проверить, находится ли один элемент в коллекции

List<String> collection = Lists.newArrayList("ab", "cd", "ef");
assertThat(collection, hasItem("cd"));
assertThat(collection, not(hasItem("zz")));

проверить, есть ли в коллекции несколько элементов

List<String> collection = Lists.newArrayList("ab", "cd", "ef");
assertThat(collection, hasItems("cd", "ef"));

**проверить все элементы в коллекции

**

- со строгим порядком

List<String> collection = Lists.newArrayList("ab", "cd", "ef");
assertThat(collection, contains("ab", "cd", "ef"));

- с любым заказом

List<String> collection = Lists.newArrayList("ab", "cd", "ef");
assertThat(collection, containsInAnyOrder("cd", "ab", "ef"));

проверить, пуста ли коллекция

List<String> collection = Lists.newArrayList();
assertThat(collection, empty());

проверить, пуст ли массив

String[] array = new String[] { "ab" };
assertThat(array, not(emptyArray()));

проверить, пуста ли карта

Map<String, String> collection = Maps.newHashMap();
assertThat(collection, equalTo(Collections.EMPTY_MAP));

проверить, пуст ли Iterable

Iterable<String> collection = Lists.newArrayList();
assertThat(collection, emptyIterable());

проверить размер коллекции

List<String> collection = Lists.newArrayList("ab", "cd", "ef");
assertThat(collection, hasSize(3));

проверка размера итерации

Iterable<String> collection = Lists.newArrayList("ab", "cd", "ef");
assertThat(collection, Matchers.<String> iterableWithSize(3));

проверить состояние каждого товара

List<Integer> collection = Lists.newArrayList(15, 20, 25, 30);
assertThat(collection, everyItem(greaterThan(10)));

3. Заключение

Этот формат является экспериментом — я публикую некоторые из моих внутренних кулинарных книг по разработке на заданную тему — Google Guava , а теперь и Hamcrest. Цель состоит в том, чтобы эта информация была легко доступна в Интернете и добавлялась к ней каждый раз, когда я сталкивался с новым полезным примером.

Реализацию всех этих примеров и фрагментов кода можно найти на GitHub — это проект на основе Maven, поэтому его легко импортировать и запускать как есть.