Skip to content

g0rd1/java-juniot-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

Решение тестовых заданий

Задание 1

Интерфейс механизма «умной» сортировки.

 Сортирует переданный список записей (каждая запись - набор колонок) таблицы
 по указанной колонке по следующим правилам:

 *  В колонке могут быть null и пустые значения - строки с null-значениями
 должны быть первыми, затем строки с пустым значением, затем все остальные;

 *  Строка бьется на подстроки следующим образом: выделяем непрерывные
 максимальные фрагменты строки, состоящие только из цифр, и считаем набором
 подстрок эти фрагменты и все оставшиеся от такого разбиения фрагменты строки;

 *  При сравнении строк осуществляется последовательное сравнение их подстрок
 до первого несовпадения;

 *  Если обе подстроки состоят из цифр - то при сравнении они интерпретируются как
 целые числа (вначале должно идти меньшее число), в противном случае - как строки;

 *  Сортировка должна быть устойчива к исходной сортировке списка - т.е., если
 строки (в контексте указанных правил сравнения) неразличимы, то сортировка
 не должна менять их местами.

 rows список записей таблицы (например, результат sql select), которые нужно
 отсортировать по указанной колонке
 columnIndex индекс колонки, по которой нужно провести сортировку

public interface IStringRowsListSorter { void sort(List<String[]> rows, int columnIndex); }

Задание 2

Интерфейс механизма «умного» присвоения номеров элементам списка.

 Метод выставляет номера {IElement#setupNumber(int)} для элементов коллекции
 {elements} в порядке следования элементов в коллекции.

 Изначально коллекция не содержит элементов, номера которых повторяются.

 При этом обеспечиваются слеюущие условия:

 * Метод работает только с существующими элементами (не создает новых);

 * На протяжении всей работы метода обеспечивается уникальность номеров элементов:
   вызов {@code element.setNumber(i)} разрешен ⇔   ∀ e ∊ {@code elements} (e.number ≠ i);

 * Метод устойчив к передаче в него в качестве параметра
 {@link java.util.Collections#unmodifiableList(List)} и любой другой реализации immutable-list;

 * Метод должен работать за «приемлемое» время ({@link IElement#setupNumber(int)} -
 трудоемкая операция и пользоваться ей надо рационально).

 elements элементы, которым нужно выставить номера

public interface IElementNumberAssigner { void assignNumbers(List elements); }

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages