2014-12-15 3 views
-2

Буду признателен за помощь.HashMap getKey или добавить значение без замены ключа

Я хочу сделать что-то вроде этого:

HashMap <MyFile,ArrayList<MyFile>> hm; new ... 

    if(hm.containsKey(MyFile)) 
     hm.put(hm.getKey(MyFile), hm.get(MyFile).add(MyFile)); 

поэтому мне нужно реализовать GETKEY.

У меня есть 2 каталога (A, b), из которых я хочу добавить в HashMap ключ, который является файлом в папке A, и как значение ArrayList, в котором я сохраню копии, которые я нахожу в fileInA, который я нахожу в папке B. Я сделал класс MyFIle и overrode равен моим потребностям.

Я хочу реализовать getkey без необходимости перебирать все ключи в HashMap.

Может кто-нибудь, пожалуйста, дайте мне несколько советов, чтобы расширить HashMap или способ достичь того, чего я хочу.

благодаря

ps.the структура моего файла

 Name , size, path, typeOfFile, CRC32 

мои равно() только сравнивает размер, typeOfFile и CRC32. my hashCode() использует те же переменные, что и мои равны. , поэтому файлы, когда я их сравниваю, одинаковы, но могут иметь другое имя или путь. поэтому я могу легко использовать hm.containsKey (val), но у меня нет исходного val, и мне нужно его получить, чтобы добавить новое значение в ListArray без потери исходного файла.

+0

'MyFile' - ваш' ключ'. Я не понимаю ваш вопрос. –

+0

Я уверен, что смогу помочь вам в этом, если бы только ваше описание проблемы было более ясным. Не могли бы вы потратить некоторое время, чтобы изменить свой вопрос, сосредоточив внимание на проблеме? Похоже, вы пытаетесь выполнить итерацию папки A, создавая карту каждого файла, а затем итерации B, находите совпадения с помощью ключевого поиска с A. В конечном итоге вам нужна структура данных, которая является файлами в B, которые соответствуют A только по имени. – ThisClark

+0

MyFIle соответствует ключу, но это не тот же файл. Я только что редактировал свой пост, объясняя структуру MyFyle. поэтому, если я использую MyFyle из папки B, чтобы добавить новое значение, я потеряю путь к MYFyle в папке A, потому что. Надеюсь, теперь все ясно. – kronolynx

ответ

-1

Если я правильно понимаю, вы можете легко использовать;

map.put (MyFile, map.get (MyFile) .add (MyFile));

И HeshMap добавляет к соответствующему новому новому элементу.

И не забудьте Override(хэш-код) для MyFile тоже (Why always override hashcode() if overriding equals()).

+0

yes i overrode hashCode и равно. проблема в том, что мне нужно получить MyFile, потому что, как я уже сказал, хотя файлы одинаковы, у них другой путь, и я не хочу его потерять. Я делаю приложение (домашняя работа), чтобы найти дубликаты файлов и удалить их. – kronolynx

+0

'add' возвращает' boolean'. –

+0

@krono вы должны переосмыслить свою логику и попытаться описать то, что вы хотите достичь, и то, что у вас есть до сих пор. И опишите это на вопрос. –

Смежные вопросы