Вопрос по java – запрос коллекции в памяти

1

У меня есть коллекция, список карт, картаMap<String, String>, Мне нужно запросить эту коллекцию со сравнением, логичным, вроде бы, не в операторах. Что-то вроде SQL.

Я буду заполнять список из хранимой процедуры базы данных, поэтому я не уверен насчет размера. Но, я думаю, размер не должен превышать 10 000 записей.

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

Другой способ, о котором я думаю, - использовать базу данных в памяти Derby для достижения этой цели.

Пожалуйста, дайте мне знать о любой библиотеке Java или любом другом способе сделать это.

Карты в списке будут как ниже:

Map<String, String> m1 = new Map<String, String>();
m1.put("name","Mark");
m1.put("age","21");
m1.put("city","some city");

Map<String, String> m1 = new Map<String, String>();
m1.put("name","David");
m1.put("age","25");
m1.put("city","other city");

Мне нужно запросить список, чтобы получить карту, которая имеет:

name=Mark name=Mark and age > 30 city not in "other city"
@ aix Коллекция будет создаваться и запрашиваться по запросу. Mr Spark
Я до сих пор не совсем понимаю, что ты хочешь делать. Возможно, несколько примеров могут быть в порядк thkala
@ thkala спасибо .. обновил мой вопрос примером Mr Spark
посмотри Lambdaj Op De Cirkel
Определите «лучше». Кроме того, каков размер коллекции и как часто вам нужно запрашивать ее? NPE

Ваш Ответ

4   ответа
2

Google Collections / Gauva. Он обеспечивает фильтрацию коллекций с помощью предикатов:

Iterables.filter (Iterable, Predicate)

Видеть этот ответ для примера фильтрации с использованием предикатов.

или Функциональная Java или Джедай или кто-то еще уже упоминал LambdaJ. Kevin Welker
2

CQEngine - Сборщик запросов.

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

Это обеспечивает реализациюjava.util.Set (IndexedCollection), который позволяет извлекать объекты на основе (произвольно сложных) запросов их атрибутов.

0

Спрашивается может запрашивать коллекции. Вы должны взглянуть, прежде чем искать решение на основе БД в памяти.

Quaere выглядит хорошо .. посмотрим на это глубже. Благодарность Mr Spark
Также нашел JoSQL, это тоже проверю .. Mr Spark
0

JFilter, который помогает вам фильтровать данные в памяти (объекты Java). Ниже приведено описание с сайта JFilter.

JFilter - это простая и высокопроизводительная библиотека с открытым исходным кодом для фильтрации (запроса), сопоставления (выбора) и сокращения (агрегирования) объектов в коллекции Java. Запрос дается в формате json, как запросы Mongodb.

Я написалпосл при использовании JFilter с картами, которые я использую в качестве общего способа хранения данных и запросов / фильтрации с помощью JFilter

Вот ссылка на пост ИспользованиеJFilter для запроса / фильтрации данных в памяти

Похожие вопросы