2011-01-02 2 views
1

У меня есть способ сравнить два списка объектов.Как вырваться из вложенного цикла?

Объекты уникальны в обоих списках.

Я делаю это с 2-го уровня, вложенным для петель

Я хочу прекратить внутреннюю для оставшихся циклов LOOP, если два объекта совпадает правильно.

Можно ли завершить оставшуюся итерацию цикла for в Java ?!

Благодаря

Проба Код:

public class NestedForLoops { 

    public static void main(String[] args) { 
    String one = "abcdefgh"; 
    String two = "ijkhmnop"; 
    System.out.println(nestedForLoop(one, two)); 

    } 

    public static String nestedForLoop(String one, String two) 
    { 
    String res = ""; 
    for(int i = 0; i < one.length(); i++) 
    { 
     for(int j = 0; j < two.length(); j++) 
     { 
      if(one.charAt(i) == two.charAt(j)){ 
       System.out.println(i + " " + j); 
       res += one.charAt(i); 
       continue; 
      } 
     } 
    } 
    return res; 
    } 

} 
+0

разум показывает нам, что вы делали до сих пор с кодом? – mauris

+0

@ thephpdeveloper: Я получил ответ. Я думал, что разрыв можно использовать только в случае statmetns. Я должен был попробовать. Хорошо, теперь я сомневаюсь, как продолжить может быть полезно. –

ответ

4

Перерыв внутренний:

for (Object o1 : list1) 
    for (Object o2 : list2) 
     if (o1.equals(o2)) 
      break; 

Перерыв внешний цикл:

outer: for (Object o1 : list1) 
    for (Object o2 : list2) 
     if (o1.equals(o2)) 
      break outer; 
1

использования оператор break; во внутреннем цикле. Если вы хотите также закрыть внешний, вам нужно будет присвоить внешний ярлык и использовать break label;.

0

Маркировочные работы (как уже ответил)

Если метод делает именно то, что проверить на равенство, то вы также можете просто вернуться из метода, когда совпадают объекты, выглядит достаточно небольшой метод, чтобы не сделать возвращение плохая практика. Лично я бы счел это более читаемым, чем использование меток.

1

Используйте multi-level break:

outside: 
for (...) 
    for (...) 
    if (found) break outside; 

В качестве альтернативы, создавая отдельный метод и использование return вместо break должен быть более удобным для чтения, так как обратные утверждения являются гораздо более распространенным явлением.

1

Да, это так. Просто поставьте оператор if, который проверяет соответствие двух объектов и внутри if, поместите оператор break. Вот пример кода:

while(coinditions for loop 1) 
{ 
    // loop body 
    while(conditions for loop 2) 
    { 
     //loop body 

     if(object1.compareTo(object2)==0) 
     { 
       break; 
     } 
    } 
} 
1
public boolean foundEqual(List<Object> list1, List<Object> list2) { 
    if (list1 == null || list2 == null) { 
    throw new NullPointerException("Lists can not be null"); 
    } 

    for (Object o1 : list1) 
    for (Object o2 : list2) 
     if (o1.equals(o2)) { 
      return true; 
     } 

    return false; 
} 
Смежные вопросы