Найти позицию элемента в Java TreeMap

Я работаю с TreeMap of Strings TreeMap, и использую его для реализации Dictionay of words.

Затем у меня есть коллекция файлов, и я хотел бы создать представление каждого файла в векторном пространстве (пространстве слов), определяемом словарем.

Каждый файл должен иметь вектор, представляющий его со следующими свойствами:

  • вектор должен иметь тот же размер, что и словарь
  • для каждого слова содержащегося в файле вектор должен иметь 1 в позиции, соответствующей позиции слова в словаре
  • для каждого слова не содержащегося в файле вектор должен иметь -... 1 в позиции, соответствующей позиции слова в словаре

Итак, моя идея состоит в том, чтобы использовать Vector для реализации этих векторов. (Этот способ представления документов в коллекции называется Boolean Model - http://www.site.uottawa.ca/~diana/csi4107/L3.pdf)

Проблема, с которой я столкнулся в процедуре создания этого вектора, заключается в том, что мне нужен способ найти позицию слова в словаре, что-то вроде этого:

String key;
int i = get_position_of_key_in_Treemap(key); <--- purely invented method...

1) Есть ли какой-нибудь метод, подобный этому, который я могу использовать на TreeMap? Если нет, не могли бы вы предоставить код, который поможет мне реализовать его самостоятельно?

2) Существует ли итератор на TreeMap (он упорядочен по алфавиту ключей), с помощью которого я могу получить позицию?

3) В конце концов, должен ли я использовать другой класс для реализации словаря? (Если вы думаете, что с TreeMap я не смогу сделать то, что мне нужно) Если да, то какой?

Спасибо заранее.

ДОБАВЛЕННАЯ ЧАСТЬ:

Решение, предложенное dasblinkenlight, выглядит хорошо, но имеет проблему сложности (линейную с размерностью словаря из-за копирования ключей в массив), и идея делать это для каждого файла неприемлема.

Есть еще идеи по моим вопросам?

19
задан Bhesh Gurung 23 December 2011 в 23:23
поделиться