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

ใช้แท็กนี้สำหรับคำถามเฉพาะสำหรับ Java 8 ซึ่งเป็นรุ่น 8 (หมายเลขภายใน 1.8) ของแพลตฟอร์ม Java ซึ่งเปิดตัวในวันที่ 18 มีนาคม 2014 ในกรณีส่วนใหญ่คุณควรระบุแท็ก java ด้วย

4
เป็นไปได้ไหมที่จะส่งกระแสข้อมูลใน Java 8?
เป็นไปได้หรือไม่ที่จะส่งกระแสข้อมูลใน Java 8? ว่าฉันมีรายการวัตถุฉันสามารถทำสิ่งนี้เพื่อกรองวัตถุเพิ่มเติมทั้งหมด: Stream.of(objects).filter(c -> c instanceof Client) แม้ว่าหลังจากนี้ถ้าฉันต้องการทำบางสิ่งกับลูกค้าฉันจะต้องเลือกแต่ละคน: Stream.of(objects).filter(c -> c instanceof Client) .map(c -> ((Client) c).getID()).forEach(System.out::println); มันดูน่าเกลียดเล็กน้อย เป็นไปได้ไหมที่จะส่งกระแสข้อมูลทั้งหมดไปเป็นประเภทอื่น ชอบที่Stream<Object>จะหล่อStream<Client>? โปรดเพิกเฉยต่อความจริงที่ว่าการทำสิ่งนี้อาจหมายถึงการออกแบบที่ไม่ดี เราทำสิ่งนี้ในวิชาวิทยาศาสตร์คอมพิวเตอร์ของฉันดังนั้นฉันจึงได้ตรวจสอบคุณสมบัติใหม่ของ java 8 และอยากรู้ว่าเป็นไปได้ไหม
160 java  java-8  java-stream 

5
แลมบ์ดาเป็นอนุกรมได้อย่างไร
ฉันจะทำให้แลมบ์ดาเป็นอนุกรมได้อย่างไร NotSerializableExceptionยกตัวอย่างเช่นโค้ดด้านล่างพ่น ฉันจะแก้ไขได้อย่างไรโดยไม่สร้างSerializableRunnableอินเทอร์เฟซ "จำลอง" public static void main(String[] args) throws Exception { File file = Files.createTempFile("lambda", "ser").toFile(); try (ObjectOutput oo = new ObjectOutputStream(new FileOutputStream(file))) { Runnable r = () -> System.out.println("Can I be serialized?"); oo.writeObject(r); } try (ObjectInput oi = new ObjectInputStream(new FileInputStream(file))) { Runnable r = (Runnable) oi.readObject(); r.run(); …

6
java lambda สามารถมีพารามิเตอร์มากกว่า 1 ตัวได้หรือไม่?
ใน Java เป็นไปได้ไหมที่แลมบ์ดาจะยอมรับหลายประเภทที่แตกต่างกัน? เช่น: ตัวแปรเดียวทำงาน: Function <Integer, Integer> adder = i -> i + 1; System.out.println (adder.apply (10)); Varargs ยังทำงานได้: Function <Integer [], Integer> multiAdder = ints -> { int sum = 0; for (Integer i : ints) { sum += i; } return sum; }; //.... System.out.println ((multiAdder.apply (new …
157 java  lambda  java-8 

1
ความแตกต่างระหว่าง ZonedDateTime และ OffsetDateTime คืออะไร
ฉันอ่านเอกสารแล้ว แต่ฉันยังไม่สามารถรับได้เมื่อฉันควรใช้อย่างใดอย่างหนึ่ง: OffsetDateTime ZonedDateTime ตามเอกสารOffsetDateTimeควรใช้เมื่อเขียนวันที่ไปยังฐานข้อมูล แต่ฉันไม่เข้าใจสาเหตุ
155 java  java-8  java-time 


10
ส่วนต่อประสานการทำงานที่ใช้ใน Java 8 คืออะไร?
ฉันเจอคำศัพท์ใหม่ใน Java 8: "functional interface" ฉันเท่านั้นที่สามารถหาหนึ่งใช้ประโยชน์จากมันขณะที่ทำงานกับการแสดงออกแลมบ์ดา Java 8 มีอินเทอร์เฟซการทำงานบางอย่างในตัวและหากเราต้องการกำหนดอินเตอร์เฟสการทำงานใด ๆ เราสามารถใช้@FunctionalInterfaceคำอธิบายประกอบได้ มันจะช่วยให้เราประกาศเพียงวิธีเดียวในอินเทอร์เฟซ ตัวอย่างเช่น: @FunctionalInterface interface MathOperation { int operation(int a, int b); } มีประโยชน์อย่างไรใน Java 8 นอกเหนือจากการทำงานกับการแสดงออกแลมบ์ดา ? (คำถามที่นี่แตกต่างจากที่ฉันถามมันถามว่าทำไมเราถึงต้องมีอินเตอร์เฟซที่ใช้งานได้ในขณะที่ทำงานกับการแสดงออกแลมบ์ดาคำถามของฉันคือ: ทำไมการใช้งานอื่น ๆ
154 java  lambda  interface  java-8 

26
ลำดับการสตรีม Java 8 แบบย้อนกลับ
คำถามทั่วไป: อะไรคือวิธีที่เหมาะสมในการย้อนกลับสตรีม สมมติว่าเราไม่ทราบว่าองค์ประกอบใดของสตรีมที่ประกอบไปด้วยอะไรคือวิธีทั่วไปในการย้อนกลับสตรีมใด ๆ คำถามเฉพาะ: IntStreamนำเสนอวิธีการแบบช่วงเพื่อสร้างจำนวนเต็มในช่วงที่เฉพาะเจาะจงIntStream.range(-range, 0)ตอนนี้ฉันต้องการย้อนกลับจากการเปลี่ยนช่วงจาก 0 ไปเป็นค่าลบจะไม่ทำงานและฉันไม่สามารถใช้Integer::compare List<Integer> list = Arrays.asList(1,2,3,4); list.stream().sorted(Integer::compare).forEach(System.out::println); กับIntStreamฉันจะได้รับรวบรวมข้อผิดพลาดนี้ ข้อผิดพลาด: (191, 0) ajc: วิธีการsorted()ในประเภทIntStreamไม่สามารถใช้ได้กับข้อโต้แย้ง ( Integer::compare) ฉันคิดถึงอะไรที่นี่

9
ไม่สามารถรับ LocalDateTime จาก TemporalAccessor เมื่อแยกวิเคราะห์ LocalDateTime (Java 8)
ฉันแค่พยายามแปลงสตริงวันที่ให้เป็นวัตถุ DateTime ใน Java 8 เมื่อรันบรรทัดต่อไปนี้: DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); LocalDateTime dt = LocalDateTime.parse("20140218", formatter); ฉันได้รับข้อผิดพลาดต่อไปนี้: Exception in thread "main" java.time.format.DateTimeParseException: Text '20140218' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 2014-02-18 of type java.time.format.Parsed at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1918) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1853) at java.time.LocalDateTime.parse(LocalDateTime.java:492) ไวยากรณ์เหมือนกับสิ่งที่ได้รับการแนะนำที่นี่แต่ฉันได้รับการยกเว้น JDK-8u25ฉันใช้

14
การบีบอัดสตรีมโดยใช้ JDK8 พร้อม lambda (java.util.stream.Streams.zip)
ใน JDK 8 ที่มีแลมบ์ดา b93 มีคลาสjava.util.stream.Streams.zip ใน b93ซึ่งสามารถใช้ในการสตรีม zip (นี่คือตัวอย่างในบทเรียนExploring Java8 Lambdas ตอนที่ 1 โดย Dhananjay Nene ) ฟังก์ชั่นนี้: สร้างสตรีมรวมที่ขี้เกียจและต่อเนื่องกันซึ่งองค์ประกอบเป็นผลลัพธ์ของการรวมองค์ประกอบของสองสตรีม อย่างไรก็ตามใน b98 นี้ได้หายไป Infact Streamsชั้นไม่ได้สามารถเข้าถึงได้ในjava.util.stream ใน B98 ฟังก์ชั่นนี้ได้ถูกย้ายไปแล้วหรือไม่และถ้าอย่างนั้นฉันจะซิปสตรีมอย่างกระชับโดยใช้ b98 ได้อย่างไร? แอปพลิเคชันที่ฉันมีอยู่ในการใช้งานจาวาของ Shenซึ่งฉันได้แทนที่ฟังก์ชั่น zip ใน static <T> boolean every(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred) static <T> T find(Collection<T> c1, Collection<T> …

2
จะมั่นใจลำดับการประมวลผลในสตรีม java8 ได้อย่างไร
ฉันต้องการประมวลผลรายการภายในXMLวัตถุ java ฉันต้องแน่ใจว่าประมวลผลองค์ประกอบทั้งหมดตามลำดับที่ได้รับ ฉันควรโทรหาsequentialแต่ละครั้งที่streamฉันใช้หรือไม่ list.stream().sequential().filter().forEach() หรือมันก็เพียงพอแล้วที่จะใช้กระแสตราบเท่าที่ฉันไม่ได้ใช้คู่ขนาน? list.stream().filter().forEach()
148 java  java-8  java-stream 

10
คุณสามารถแบ่งสตรีมเป็นสองสตรีมได้หรือไม่?
ฉันมีชุดข้อมูลที่แสดงโดยกระแส Java 8: Stream<T> stream = ...; ฉันสามารถดูวิธีการกรองเพื่อให้ได้ชุดย่อยแบบสุ่ม - ตัวอย่างเช่น Random r = new Random(); PrimitiveIterator.OfInt coin = r.ints(0, 2).iterator(); Stream<T> heads = stream.filter((x) -> (coin.nextInt() == 0)); ฉันยังสามารถดูวิธีที่ฉันสามารถลดสตรีมนี้เพื่อให้ได้ตัวอย่างเช่นสองรายการที่แสดงชุดข้อมูลแบบสุ่มสองครึ่งและจากนั้นเปลี่ยนกลับเป็นสตรีม แต่มีวิธีโดยตรงในการสร้างสองสตรีมจากสตรีมเริ่มต้นหรือไม่ สิ่งที่ต้องการ (heads, tails) = stream.[some kind of split based on filter] ขอบคุณสำหรับความเข้าใจใด ๆ
146 java  java-8  java-stream 

7
ความแตกต่างระหว่าง Java 8 สตรีมและ RxJava ที่สังเกตได้
Java 8 สตรีมคล้ายกับ RxJava หรือไม่ การกำหนดสตรีม Java 8: คลาสในjava.util.streamแพ็คเกจใหม่มี Stream API เพื่อรองรับการทำงานในรูปแบบการใช้งานในส่วนขององค์ประกอบ

4
ทำความเข้าใจกับ Spliterator, Collector และ Stream ใน Java 8
ฉันมีปัญหาในการเข้าใจStreamอินเตอร์เฟสใน Java 8 โดยเฉพาะอย่างยิ่งที่เกี่ยวข้องกับSpliteratorและCollectorอินเตอร์เฟส ปัญหาของฉันคือฉันไม่เข้าใจSpliteratorและCollectorอินเทอร์เฟซเลยและด้วยเหตุนี้Streamอินเทอร์เฟซยังค่อนข้างคลุมเครือสำหรับฉัน อะไรคือ a Spliteratorและ a Collectorและฉันจะใช้ได้อย่างไร หากฉันยินดีที่จะเขียนของตัวเองSpliteratorหรือCollector(และอาจเป็นของฉันเองStreamในกระบวนการนั้น) ฉันควรทำอย่างไรและไม่ควรทำอย่างไร ฉันอ่านตัวอย่างกระจัดกระจายไปทั่วเว็บ แต่เนื่องจากทุกอย่างที่นี่ยังใหม่และอาจมีการเปลี่ยนแปลงตัวอย่างและแบบฝึกหัดก็ยังกระจัดกระจายมาก

4
จะระบุประเภทฟังก์ชั่นสำหรับวิธี void (ไม่ใช่ Void) ใน Java8 ได้อย่างไร?
ฉันกำลังเล่นกับ Java 8 เพื่อหาวิธีการทำงานในฐานะพลเมืองชั้นหนึ่ง ฉันมีตัวอย่างต่อไปนี้: package test; import java.util.*; import java.util.function.*; public class Test { public static void myForEach(List<Integer> list, Function<Integer, Void> myFunction) { list.forEach(functionToBlock(myFunction)); } public static void displayInt(Integer i) { System.out.println(i); } public static void main(String[] args) { List<Integer> theList = new ArrayList<>(); theList.add(1); theList.add(2); theList.add(3); theList.add(4); theList.add(5); …
143 java  java-8 

7
Java 8 Streams - รวบรวม vs ลด
เมื่อคุณจะใช้collect()VS reduce()? มีใครบ้างที่เป็นตัวอย่างที่ดีและเป็นรูปธรรมว่าเมื่อใดควรไปทางเดียวหรือดีกว่า javadoc กล่าวว่าการเก็บรวบรวม () การลดลงแน่นอน ระบุว่าเป็นการลดที่ไม่แน่นอนฉันคิดว่ามันต้องมีการประสาน (ภายใน) ซึ่งในทางกลับกันอาจเป็นอันตรายต่อประสิทธิภาพการทำงาน สันนิษฐานได้ว่าreduce()เป็นแบบขนานที่พร้อมใช้งานมากขึ้นโดยไม่ต้องสร้างโครงสร้างข้อมูลใหม่เพื่อให้ได้รับผลตอบแทนหลังจากทุกขั้นตอนในการลด ข้อความข้างต้นเป็นการคาดเดาอย่างไรก็ตามและฉันรักผู้เชี่ยวชาญในการพูดสอดที่นี่
143 java  java-8  java-stream 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.