請停止編寫這么多的for循環(huán)!

在這篇文章中,我想和你一起回到基礎(chǔ)知識,并討論 Java 中的 for 循環(huán)。老實說,我正在為自己寫這篇博客文章,因為我也會這樣做。從 Java 8 開始,我們不必在 Java 中編寫太多 for 循環(huán)!我希望這篇文章將使你的代碼更易于閱讀和編寫。

你需要 for 循環(huán)做什么?

一般地說,for 循環(huán)執(zhí)行兩類任務(wù):

  • 遍歷集合
  • 運行算法

對于算法,for 循環(huán)可能是合適的??匆幌麓怂惴?,檢查數(shù)字是否為三的冪:

double number = 81;
for(; number > 1; number /=3);
return number == 1;

在這里,for 循環(huán)是合適的。這是一個非常簡單的示例,你可以想象,使用更困難的算法會變得更加棘手。

對于大多數(shù)開發(fā)人員而言,在他們的日常工作中,這種情況很少。大多數(shù)時候,我們使用 for 循環(huán)遍歷集合。讓我們看一下該代碼的一些示例。

遍歷 Java 中的集合

我們首先來定義一個 List<String> 數(shù)組,并往里面插入一些元素:

List<String> heroes = new ArrayList<>();
heroes.add("典韋");
heroes.add("云中君");
heroes.add("魯班");
heroes.add("盤古");
heroes.add("大喬");
heroes.add("宮本武藏");
heroes.add("裴擒虎");
heroes.add("明世隱");

有很多方法可以對其進行迭代。讓我們從相當(dāng)古老的迭代器方法開始:

Iterator<String> heroesIterator = heroes.iterator();
while (heroesIterator.hasNext()) {
    System.out.println(heroesIterator.next());
}

這種代碼使 Java 在冗長性上享有應(yīng)有的聲譽。

這次嘗試使用經(jīng)典的索引 for 循環(huán):

for (int i = 0; i < heroes.size(); i++) {
    System.out.println(heroes.get(i));
}

嗯,這有點簡單,但是在 Java 5 之后,我們可以這樣處理循環(huán):

for (String hero : heroes) {
    System.out.println(hero);
}

這是大多數(shù)開發(fā)人員陷入困境的地方。這種結(jié)構(gòu)非常熟悉并且易于遵循,以至于我們大多數(shù)人都不會去考慮更好的東西。但是在 Java 8 以后我們可以使用 forEach 函數(shù)來進行簡化。

借助 Java 8,我們可以使用 forEach 函數(shù):

heroes.forEach(hero -> System.out.println(hero));

我們可以進一步簡化它:

heroes.forEach(System.out::println);

在我們只是迭代數(shù)組的元素時,這樣會使代碼很簡潔。

下一步呢?使用 Java Streams

一旦停止在 Java 中編寫如此多的 for 循環(huán),forEach 就成為了你的第二選擇,那么你應(yīng)該看看 Java 中的 Streams。

例如,使用類似的語法,你可以輕松選擇所有以 “魯” 開頭的英雄:

heroes.stream().filter(hero -> hero.startsWith("魯"))
        .forEach(System.out::println);

運行結(jié)果會顯示小短腿“魯班”。

總結(jié)

停止編寫太多 for 循環(huán),完成后,Java 8 Streams 將自然而然地出現(xiàn),你的代碼將更易于閱讀和編寫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容