Использовать готовые библиотеки для работы с CSV
Я не согласен с этим ограничением. Зачем оно? Так хочет твой преподаватель? Это просто неконструктивно. В процессе написания парсера ты соберешь миллион гвоздей и шишек. Лучше брать готовы парсеры которые работают со скорость канала IO (
Univocity например).
Перечитывать полностью весь CSV файл каждый раз (и даже отдельные колонки)
Я не согласен с этим ограничением. Почему нельзя? Цель найти данные. А не банить операции I/O.
Если ты делаешь
In-Memory DB то так и напиши. А то получаетася такое завуалированное требовие.
Потому-что решать эту задачу не читая CSV невозможно.
У меня уже есть некоторое решение, а именно решил так: читаю файл, сравниваю с введенной строкой, и кеширую, если в кеше уже есть такой ключ (кеш реализовал с помощью LinkedHashMap
Какая-то ерунда. Откуда здесь берется условие "если" ? Тебе не нужно если, чувак. Тебе нужно 100% данных
положить in-memory сразу во время первого чтения. Причем тебе нужно столько LHM, сколько колонок.
Я не прошу решить за меня если что) Мне бы задать вектор, что почитать, что посмотреть, потому что какое-то более хорошее решение придумать не получается... Спасибо!
Скорее всего нет такого вектора. Но ты должен начать читать с
Алгоритмов и Структур данных
Потом почитай про дисковые структуры данных для поиска
B+Tree, LSMTree. Почитай как устроены
таблицы в
Cassandra (partitionkey, clustering key). Почитай как работает LRU и кеш блоков.