我已經開始使用Java 8並嘗試將代碼中的一些循環和舊語法轉換爲lambdas和流。將循環(while和for)轉換爲流
因此,例如,我想這一點的同時轉換和循環到流,但我沒有得到它的權利:
List<String> list = new ArrayList<>();
if (!oldList.isEmpty()) {// old is a List<String>
Iterator<String> itr = oldList.iterator();
while (itr.hasNext()) {
String line = (String) itr.next();
for (Map.Entry<String, String> entry : map.entrySet()) {
if (line.startsWith(entry.getKey())) {
String newline = line.replace(entry.getKey(),entry.getValue());
list.add(newline);
}
}
}
}
我想知道是否有可能以上面的例子轉換到for循環中有一個while循環的單個流。
「試圖將我的代碼中的一些循環和舊語法轉換爲lambda和流。」你想在這裏獲得什麼?流可以簡化一些任務,但有時循環更易於閱讀和維護。另外爲什麼你有'迭代器 itr = oldList.iterator(); while(itr.hasNext()){String line =(String)itr.next(); ...}而不是'for(String line:oldList){...}'?你也可以刪除if(!oldList.isEmpty()),因爲如果list是空的,你不會迭代。 –
Pshemo
嗨Pshemo,謝謝你這麼快速的迴應。它是一個已經存在的代碼,所以我只是想知道是否可以更新一些到Streams的循環。我已經做了一些沒有錯誤,但只是有好奇心,如果可以做到這一點,如上面的嵌套循環。 –
這本質上是問「如何用流代替嵌套循環」:https://stackoverflow.com/q/27174700/1531971 – jdv