поиск объекта в коллекции java - PullRequest
1 голос
/ 24 марта 2011

во-первых, я не знаю, эффективно ли я организовываю свои данные, идея в том, что у меня есть пары ключ / значение.коллекция: List<Freq> bla = new ArrayList<Freq>(), а также сортировка.

Мне интересно искать конкретные объекты, например Freq.name = 'Bar' из коллекции, которая сортируется.Как бы я это сделал?Или мне нужно перебрать всю коллекцию.

или есть другие более эффективные способы сделать это?

Ответы [ 2 ]

3 голосов
/ 24 марта 2011

Вы должны использовать связанную коллекцию, такую ​​как TreeMap, которая автоматически сортирует свои элементы. Если вы хотите искать иногда по имени, а иногда по частоте, вы можете хранить свои элементы на двух картах одновременно и использовать подходящую для поиска.

Или, если по какой-то причине вы хотите придерживаться отсортированного списка, вы можете использовать Collections.binarySearch(), чтобы найти элементы в нем.

0 голосов
/ 05 апреля 2012

Вы можете использовать JFilter http://code.google.com/p/jfilter/

JFilter - это простая и высокопроизводительная библиотека с открытым исходным кодом для запроса коллекции Java-бинов.

Основные характеристики

  • Поддержка свойств коллекции (java.util.Collection, java.util.Map и Array).
  • Поддержка сбора внутри коллекции любой глубины.
  • Поддержка внутренних запросов.
  • Поддержка параметризованных запросов.
  • Может отфильтровать 1 миллион записей за 100 мс.
  • Фильтр (запрос) дается в простом формате json, он похож на запросы Мангодба. Ниже приведены некоторые примеры.
    • {"id": {"$ le": "10"}
    • где свойство id объекта меньше, чем равно 10.
    • {"id": {"$ in": ["0", "100"]}}
    • где свойство id объекта равно 0 или 100.
    • { "lineItems": { "lineAmount": "1"}}
    • где свойство коллекции lineItems параметризованного типа имеет значение lineAmount, равное 1.
    • {"$ and": [{"id": "0"}, {"billingAddress": {"city": "DEL"}}]}
    • где свойство id равно 0, а свойство billingAddress.city равно DEL.
    • {"lineItems": {"tax": {"key": {"code": "GST"}, "value": {"$ gt": "1.01"}}}} где свойство коллекции lineItems параметризованного типа, имеющее свойство типа карты налогов параметризованного типа, имеет код, равный значению GST, превышающему 1,01.
    • {'$ or': [{'code': '10'}, {'skus': {'$ and': [{'price': {'$ in': ['20', '40 ']}}, {' code ':' RedApple '}]}}]}
    • Выберите все продукты, для которых код продукта 10 или цена sku в 20 и 40 и код sku "RedApple".
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...