ฉันเพิ่งเจอคำถามเมื่อใช้ a List
และstream()
วิธีการของมัน แม้ว่าฉันจะรู้วิธีใช้ แต่ฉันก็ไม่ค่อยแน่ใจว่าควรใช้เมื่อใด
ตัวอย่างเช่นฉันมีรายการที่มีเส้นทางต่างๆไปยังสถานที่ต่างๆ ตอนนี้ฉันต้องการตรวจสอบว่าเส้นทางเดียวที่ระบุมีเส้นทางใด ๆ ที่ระบุในรายการหรือไม่ ฉันต้องการส่งคืนboolean
โดยพิจารณาว่าเป็นไปตามเงื่อนไขหรือไม่
แน่นอนว่านี่ไม่ใช่งานหนัก แต่ฉันสงสัยว่าฉันควรใช้สตรีมหรือสำหรับ (-each) ลูป
รายการ
private static final List<String> EXCLUDE_PATHS = Arrays.asList(new String[]{
"my/path/one",
"my/path/two"
});
ตัวอย่าง - สตรีม
private boolean isExcluded(String path){
return EXCLUDE_PATHS.stream()
.map(String::toLowerCase)
.filter(path::contains)
.collect(Collectors.toList())
.size() > 0;
}
ตัวอย่าง - สำหรับ - แต่ละวง
private boolean isExcluded(String path){
for (String excludePath : EXCLUDE_PATHS) {
if(path.contains(excludePath.toLowerCase())){
return true;
}
}
return false;
}
หมายเหตุว่าpath
พารามิเตอร์อยู่เสมอเป็นตัวพิมพ์เล็ก
การเดาแรกของฉันคือสำหรับแต่ละวิธีนั้นเร็วกว่าเพราะลูปจะกลับมาทันทีหากตรงตามเงื่อนไข ในขณะที่สตรีมยังคงวนซ้ำในรายการทั้งหมดเพื่อให้การกรองเสร็จสมบูรณ์
สมมติฐานของฉันถูกต้องหรือไม่? ถ้าเป็นเช่นนั้นทำไม (หรือเมื่อนั้น ) ฉันจึงจะใช้stream()
?