2015-10-24 3 views
-2

У меня есть этот код и хотим, чтобы превратить его из для каждого цикла на регулярный циклПреобразования это обычный цикл

for(Coordinate neighbors : getNeighbors(current)){ 
    if(!previous.containsKey(neighbors)){ 
     previous.put(neighbors, current); 
     list.add(neighbors); 
    } 
} 

Извините за плохую спецификацию. getNeighbors возвращает набор координат

+0

Почему вы хотите сделать это? – Tunaki

+0

Это невозможно ответить, поскольку мы понятия не имеем, что такое тип 'getNeighbors (current)'. –

+0

Если 'getNeighbours' возвращает' Set ', тогда ответ Эрана будет работать, но я не знаю, почему вам не нравится каждый цикл. –

ответ

2

Это трудно дать лучший ответ, не зная, какой тип getNeighbors(current) возвращается, но вы всегда можете создать цикл с явным итератора:

for(Iterator<Coordinate> iter = getNeighbors(current).iterator(); iter.hasNext();){ 
    Coordinates neighbors = iter.next(); 
    if(!previous.containsKey(neighbors)){ 
     previous.put(neighbors, current); 
     list.add(neighbors); 
    } 
} 
+0

Спасибо. Ток имеет тип Coordinate, который состоит из двух целых чисел. GetNeighbors возвращает набор – mslvr40

1

Без разумного объяснения того, что вы «Я не могу дать лучший ответ, чем это, но он дает картину.

В случае массива

for(int i=0; i<getNeighbors(current).length; i++){ 
    if(!previous.containsKey(getNeighbors(current)[i])){ 
     previous.put(getNeighbors(current)[i], current); 
     list.add(getNeighbors(current)[i]); 
    } 
} 

В случае ArrayList

for(int i=0; i<getNeighbors(current).size(); i++){ 
    if(!previous.containsKey(getNeighbors(current).get(i))){ 
     previous.put(getNeighbors(current).get(i), current); 
     list.add(getNeighbors(current).get()); 
    } 
} 
Смежные вопросы