2016-02-05 32 views
0

讓我們來看看這個簡單的場景:在飛行管理項目轉換的爲:每個

String ids = "10_20_30_40"; 
for (String idString : ids.split("_")) { 
    int id = Integer.parseInt(idString); 
} 

有一種方法來避免這種轉換,直接得到int價值?喜歡的東西:

for (int id : Integer.parseEach(ids.split("_"))) { 

} 

for (int id : ids.split("_").stream(...)) { 

} 
+0

那是一行代碼咬你喜歡的蜜蜂? – Hackerdarshi

+0

@Hackerdarshi nope,但是像流這樣的新Java-8特性可能有更美觀的方式來做到這一點......只是猜測。 –

回答

3

幾個選項浮現在腦海中。這將是很好的提取的用於在方法循環的內容,說void useId(int id)

你可以使用Pattern::splitAsStream

Pattern underscore = Pattern.compile("_"); 
underscore.splitAsStream(ids) 
     .mapToInt(Integer::parseInt) 
     .forEach(this::useId); 

或者你可以簡單地流分割的結果是:

Arrays.stream(ids.split("_")).mapToInt(...)... 

或者,您可以創建一個陣列:

for (int id : underscore.splitAsStream(ids).mapToInt(Integer::parseInt).toArray()) { 

} 

或...你可以保持你的循環!

2

這裏是我的解決方案:

String ids = "10_20_30_40"; 
Arrays.stream(ids.split("_")).mapToInt(Integer::parseInt) 
    .forEachOrdered(id -> { 
     System.out.println(id); 
    });