คำถามติดแท็ก java-stream

ใช้แท็กนี้สำหรับคำถามที่เกี่ยวข้องกับการใช้ Stream API มันถูกนำมาใช้ใน Java 8 และสนับสนุนการดำเนินงานสไตล์การทำงานกับกระแสของค่าเช่นท่อกรองลดแผนที่ในคอลเลกชัน

3
Java Stream: กรองด้วยหลายช่วง
ฉันกำลังพยายามกรองทรัพยากรและไม่รวมองค์ประกอบบางอย่างตามเขตข้อมูล หากต้องการยกเว้นฉันมีชุด (ที่มีรหัสที่ต้องยกเว้น) และรายการ (มีรหัสช่วงที่ต้องแยกออกหลายช่วง) ฉันเขียนตรรกะด้านล่างและฉันไม่พอใจกับตรรกะตัวกรองที่สอง มีวิธีที่ดีกว่าที่เราสามารถทำได้ด้วย Java 8 หรือไม่? ฉันต้องทำสิ่งเดียวกันเพื่อรวมช่วงต่างๆด้วย Set<String> extensionsToExclude = new HashSet<>(Arrays.asList("20","25","60","900")); List<String> rangesToExclude = new ArrayList<>(Arrays.asList("1-10","20-25","50-70","1000-1000000")); return directoryRecords.stream() .filter((directoryRecord) -> !extensionsToExclude.contains(directoryRecord.getExtensionNumber())) .filter((directoryRecord -> { Boolean include = true; for(String s : rangesToExclude) { String [] rangeArray = s.split("-"); Integer extension = Integer.parseInt(directoryRecord.getExtensionNumber()); if(extension <= Integer.parseInt(rangeArray[0]) …

4
รับพนักงานก่อนและหลังวันที่เฉพาะเจาะจงของการเข้าร่วมจากรายชื่อพนักงานที่มีสตรีม Java
ฉันมีListของEmployees กับวันที่มาร่วมงานที่แตกต่างกัน ฉันต้องการรับพนักงานก่อนและหลังวันที่เฉพาะเจาะจงของการเข้าร่วมจากรายการโดยใช้สตรีม ฉันลองรหัสต่อไปนี้ List<Employee> employeeListAfter = employeeList.stream() .filter(e -> e.joiningDate.isAfter(specificDate)) .collect(Collectors.toList()); List<Employee> employeeListBefore = employeeList.stream() .filter(e -> e.joiningDate.isBefore(specificDate)) .collect(Collectors.toList()); class Employee{ int id; String name; LocalDate joiningDate; } มีวิธีการทำเช่นนี้ในกระแสเดียว?

5
วิธีสร้างหลายเธรดสำหรับแต่ละรายการที่ร้องขอ
ฉันพยายามประมวลผลโค้ดด้านล่างโดยใช้มัลติเธรดที่ระดับคำสั่งซื้อ List<String> orders = Arrays.asList("order1", "order2", "order3", "order4", "order1"); การดำเนินการตามลำดับปัจจุบัน: orders.stream().forEach(order -> { rules.forEach(rule -> { finalList.add(beanMapper.getBean(rule) .applyRule(createTemplate.apply(getMetaData.apply(rule), command), order)); }); }); ฉันได้ลองใช้: orders.parallelStream().forEach(order -> {}} // code snippet. แต่มันกำลังเปลี่ยนกฎสำหรับคำสั่งforEach (กฎ -> {}} ตัวอย่างเช่น: อินพุต: List<String> orders = Arrays.asList("order1", "order2", "order3", "order4", "order1"); List<String> rules = Arrays.asList("rule1", "rule2", "rule3"); ผลลัพธ์ที่คาดหวัง: …

3
วิธีคัดลอกไฟล์ข้อมูลขนาดใหญ่ทีละบรรทัด?
ฉันมีCSVไฟล์35GB ฉันต้องการอ่านแต่ละบรรทัดและเขียนบรรทัดออกเป็น CSV ใหม่หากตรงกับเงื่อนไข try (BufferedWriter writer = Files.newBufferedWriter(Paths.get("source.csv"))) { try (BufferedReader br = Files.newBufferedReader(Paths.get("target.csv"))) { br.lines().parallel() .filter(line -> StringUtils.isNotBlank(line)) //bit more complex in real world .forEach(line -> { writer.write(line + "\n"); }); } } สิ่งนี้ใช้เวลาประมาณ 7 นาที เป็นไปได้หรือไม่ที่จะเพิ่มความเร็วของกระบวนการนั้นให้มากขึ้น?

3
ส่งคืนรายการเริ่มต้นหากรายการว่างเปล่าโดยใช้ java 8 Streams?
มีวิธีใดบ้างเพื่อให้สามารถดำเนินการด้านล่างเป็นชุดการดำเนินการสตรีมหนึ่งชุดแทนการตรวจสอบอย่างชัดเจนว่าถ้า RecommendedProducts ว่างเปล่าจากนั้นส่งคืนรายการเริ่มต้นมิฉะนั้นจะส่งคืนรายการที่กรองหรือไม่ public List<Product> getRecommendedProducts() { List<Product> recommendedProducts = this.newProducts .stream() .filter(isAvailable) .collect(Collectors.toList()); if (recommendedProducts.isEmpty()) { return DEFAULT_PRODUCTS; } return recommededProducts; }

4
วิธีที่มีประสิทธิภาพในการวนซ้ำและคัดลอกค่าของ HashMap
ฉันต้องการแปลง: Map<String, Map<String, List<Map<String, String>>>> inputMap ถึง: Map<String, Map<String, CustomObject>> customMap inputMapมีให้ในการกำหนดค่าและพร้อม แต่ฉันต้องการcustomMapจัดรูปแบบ CustomObject จะได้มาจากการList<Map<String, String>>ใช้โค้ดไม่กี่บรรทัดในฟังก์ชั่น ฉันได้ลองวิธีการทำแผนที่อินพุตซ้ำและคัดลอกค่าคีย์ใน customMap แล้ว มีวิธีที่มีประสิทธิภาพในการทำเช่นนั้นโดยใช้ Java 8 หรือทางลัดอื่น ๆ ? Map<String, Map<String, List<Map<String, String>>>> configuredMap = new HashMap<>(); Map<String, Map<String, CustomObj>> finalMap = new HashMap<>(); for (Map.Entry<String, Map<String, List<Map<String, String>>>> attributeEntry : configuredMap.entrySet()) { Map<String, …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.