Java foreach是否有條件?有條件的Java Foreach
例如,
for(Foo foo : foos && try == true)
{
//Do something
}
是否有一個相當於這一點,這樣我可以把AND條件內for
?
Java foreach是否有條件?有條件的Java Foreach
例如,
for(Foo foo : foos && try == true)
{
//Do something
}
是否有一個相當於這一點,這樣我可以把AND條件內for
?
編號
您可以改爲使用while循環。
Iterator iterator = list.iterator();
while(iterator.hasNext()) {
...
}
可能是min^infinity minimin min。 – 2012-04-11 10:55:28
-1嘗試是一個關鍵字,你將有編譯器錯誤.. – 2013-01-07 07:09:28
@NandKumarTekale - 這不是Nim的問題;他正在按照OP的寫法行事。 – JoshDM 2013-11-15 20:04:53
否,的foreach是專門只爲迭代的陣列或集合的所有元素而設計的。
如果你想讓你可以檢查它裏面的條件,並使用中斷關鍵字中間出環路。
不,沒有這樣的事情。 「增強的for循環」是一個完全獨立的構造,除了通過參數Iterable
返回的迭代器的lopp之外什麼也不做。
你可以做的是這樣的:
for(Foo foo : foos)
{
//Do something
if(!condition){
break;
}
}
猜測foreach並不是那麼優雅。 – 2012-04-11 10:56:20
這是某種任務的工具。 – DerMike 2012-04-11 10:57:56
@ TJ-:其實,我會說做一件事情只會讓它更優雅。類似C的for循環將迭代,初始化和任意複雜的條件和迭代步驟集中在一個超級強大的構造中,只是以與95%的情況完全相同的方式使用。*這種情況非常不雅觀。 – 2012-04-11 10:59:32
在Java 8
,您可以做它。例如:
foos.forEach(foo -> {
if(try) {
--your code--
}
});
太容易提供-1沒有任何解釋。 – 2016-09-26 13:58:46
,因爲您只是將條件放入循環體中。在Java 8中,原始問題會是這樣的:Java 8 foreach是否有條件?例如:'foos.forEach(try,foo - > { - 您的代碼 - });',其中'try'是Predicate。 – foal 2016-10-17 16:31:54
你可以得到最接近的可能是過濾初始迭代:
for(Foo foo : filter(foos)) {
//Do something
}
當過濾器方法返回一個包含僅針對您的病情,並持有這些元素的迭代。例如有番石榴,你可以寫一個過濾器的方法是這樣的:
Iterable<String> filter(Iterable<String> foos) {
return Iterables.filter(foos,
input -> input.equals("whatever");
}
的for-each不能具備的條件,這裏是你問的是等效的:
Iterator<Foo> iterator = foos.iterator();
while(iterator.hasNext() && condition == true) {
//Do something
}
欲瞭解更多信息,您可能需要看看http://stackoverflow.com/a/3433775/197574 – DerMike 2012-04-11 10:56:53
\ @anyone,請當我有一個lib可用時ping我。非常感謝你提前! – 2014-01-17 19:55:42