2015-11-19 3 views
1

Я рассматриваю возможность разворачивания цикла, который записывается для итерации элементов на карте хэша. Выведенный код - это код.Выполнение Loop Unrolling во время итерации hashmap

for (final Object key : map.keySet()) 
{ 

    if (input_map.containsKey(key)) 
    { 
     System.out.println("Matching key: " + key); 
     if (map.get(key).equals(input_map.get(key))) 
     { 

      System.out.println("hii!done"); 
     } 
     else 
     { 
      System.out.println(key); 
      final String values = 
      key. 
      toString(). 
      substring(key.toString().lastIndexOf("\\") + 1); 

      System.out.println("input_map" + 
      input_map.get(key)); 
      System.out.println("map" + map.get(key)); 
     } 
    } 
} 

Объяснение: В настоящее время сравнение в цикле делается на основе одного элемента в то время, то есть «ключ» .Я смотрит на возможности, где я могу получить следующий последовательные ключи в одной итерации, т.е. (ключ, ключ + 1, клавиша + 2).

Любые предложения были бы очень полезными.

+2

Почему? Это то же самое количество работы, чтобы сравнить 10 отдельных ключей, сравнивая 2 в разное время. 5. – zapl

+0

Код неверно отформатирован, пожалуйста, обновите его –

+1

Но чего вы пытаетесь достичь с помощью этого кода на самом деле? дать нам примерный сценарий, где это имеет смысл? –

ответ

3

Используйте метод KeySet или EntrySetiterator() и while петлю через с hasNext() и next(). Вам нужно обрабатывать случаи, когда у него нет 3 повторяющихся элементов. Затем у вас есть 3 клавиши и вы можете легко получить доступ к значениям в Map.

Iterator<Integer> it = myMap.keySet().iterator(); 

while(it.hasNext()) 
{ 
    int first = it.next(); 
    int second = it.next(); 
    int third = it.next(); 
} 
Смежные вопросы