JavaRush /จาวาบล็อก /Random-TH /คอฟฟี่เบรค #73 วิธีปรับปรุงโค้ด Java ของคุณด้วย Streams ห...

คอฟฟี่เบรค #73 วิธีปรับปรุงโค้ด Java ของคุณด้วย Streams ห้าปลั๊กอิน IntelliJ IDEA ที่ดีที่สุดสำหรับนักพัฒนา Java

เผยแพร่ในกลุ่ม

วิธีปรับปรุงโค้ด Java ของคุณด้วย Streams

ที่มา: Dev.toคอฟฟี่เบรค #73  ปรับปรุงโค้ด Java ของคุณด้วย Streams  ห้าปลั๊กอิน IntelliJ IDEA ที่ดีที่สุดสำหรับนักพัฒนา Java - 1

สตรีมคืออะไร?

Streams ปรากฏตัวครั้งแรกใน Java 8 ตามเอกสารของ Oracle สตรีมเหล่านี้เป็นคลาสสำหรับรองรับการดำเนินการสไตล์ฟังก์ชันบนสตรีมขององค์ประกอบ เช่น การแปลงการลดแผนที่ในคอลเลกชัน กล่าวง่ายๆ ก็คือ สตรีมประกอบด้วยแหล่งข้อมูล ตามด้วยการดำเนินการระดับกลางเป็นศูนย์หรือมากกว่านั้น ตามด้วยการดำเนินการเทอร์มินัล

แหล่งข้อมูลคืออะไร?

  • คอลเลกชัน รายการ เซต ints ยาว คู่ อาร์เรย์ บรรทัดไฟล์

การดำเนินการระดับกลางคืออะไร?

  • ตัวกรอง แผนที่ การเรียงลำดับ ฯลฯ
  • การดำเนินการเหล่านี้ส่งคืนสตรีมเพื่อให้สามารถเชื่อมโยงกับการดำเนินการอื่นได้

การทำงานของเทอร์มินัลคืออะไร?

  • สำหรับแต่ละ รวบรวม ลด ค้นหาก่อน ฯลฯ
  • พวกเขาส่งคืนผลลัพธ์ที่ไม่ถูกต้องหรือไม่ใช่สตรีม
  • ถ้าเธรดไม่มีการดำเนินการของเทอร์มินัล ตัวกลางจะไม่ถูกเรียก

มาแปลงฟังก์ชันจากรูปแบบความจำเป็นเป็นรูปแบบการประกาศโดยใช้ Streams

ฟังก์ชันที่จำเป็น (ไม่มีสตรีม):

private int getResult_imperative(List<String> strings) {
    int result = 0;
    for (String string : strings){
        if(isDigit(string.charAt(0))) continue;
        if (string.contains("_")) continue;
        result += string.length();
    }
    return result;
}
ที่นี่เราสังเกตเห็นว่าเราต้องทำบางสิ่งด้วยตนเอง:
  • ประกาศตัวแปรผลลัพธ์เพื่อติดตามผลลัพธ์
  • วนซ้ำผ่านสตริง
  • เขียนคำสั่ง ifสอง คำสั่ง (ซึ่งอาจซับซ้อนกว่าในกรณีนี้มาก)
  • เพิ่มความยาวของแต่ละผลลัพธ์

มาตรวจสอบรูปแบบการประกาศ (สตรีม):

private int getResult_Declarative(List<String> strings){
    return strings.
            stream().
            filter(s -> !isDigit(s.charAt(0))).
            filter(s -> !s.contains("_")).
            mapToInt(String::length).
            sum();
}
แล้วความแตกต่างคืออะไร?
  • เราได้รับวัตถุ Stream โดยการเรียกใช้ฟังก์ชันstream()
  • (การดำเนินการระดับกลาง)เราใช้ฟังก์ชันตัวกรองสองครั้ง - แต่ละครั้งเราจะระบุเงื่อนไขที่ต้องเป็นไปตามองค์ประกอบเหล่านั้นที่เราต้องการย้ายไปในระยะต่อไปเท่านั้น
  • (การดำเนินการระดับกลาง)เราแมปแต่ละ ออบเจ็กต์ Stringกับint โดยการเรียก เมธอดlength (โดยใช้สไตล์การอ้างอิงเมธอด)
  • (การดำเนินการเทอร์มินัล)รวมค่าint ก่อนหน้าทั้งหมด

ข้อสังเกต

วิธีที่สองดูง่ายกว่านี้ไม่ใช่หรือ? เราระบุ สิ่งที่ เราต้องการ ไม่ใช่วิธีที่เราต้องการจะทำ นี่คือจิตวิญญาณของการเขียนโปรแกรมแบบประกาศและเป้าหมายของ Stream API ในแอปพลิเคชัน Java สมัยใหม่

ห้าปลั๊กอิน IntelliJ IDEA ที่ดีที่สุดสำหรับนักพัฒนา Java

ที่มา: ปลั๊กอิน GitHubคอฟฟี่เบรค #73  ปรับปรุงโค้ด Java ของคุณด้วย Streams  ห้าปลั๊กอิน IntelliJ IDEA ที่ดีที่สุดสำหรับนักพัฒนา Java - 2มีประโยชน์มากในหลาย ๆ สถานการณ์เมื่อทำงานกับโค้ดเป็นประจำ พวกเขาสามารถขยายฟังก์ชันการทำงานหลัก ให้การบูรณาการที่หลากหลาย และสนับสนุนระบบอัตโนมัติของงานต่างๆ มากมาย นี่คือปลั๊กอินที่ดีที่สุดในความคิดของฉัน:

โซนาร์ลินท์

SonarLint ช่วยให้คุณแก้ไขข้อผิดพลาดและช่องโหว่เมื่อเขียนโค้ด โดยจะเน้นปัญหาการเขียนโค้ดแบบเรียลไทม์ โดยให้คำแนะนำที่ชัดเจนแก่นักพัฒนาเกี่ยวกับวิธีการแก้ไข เพื่อให้คุณสามารถแก้ไขได้ก่อนที่จะคอมมิตโค้ด ปลั๊กอินนี้จำเป็นเนื่องจากช่วยปรับปรุงการเขียนโค้ดได้อย่างมาก

ผู้ช่วยมาเวน

ฉันหวังว่าคุณจะใช้ Maven? ฉันทำ! ปลั๊กอิน Maven Helper ให้:
  • วิธีง่ายๆ ในการวิเคราะห์และกำจัดการพึ่งพาที่ขัดแย้งกัน
  • วิธีง่ายๆ ในการค้นหาการขึ้นต่อกันโดยตรงหรือแบบสกรรมกริยา
  • ขั้นตอนในการรัน/ดีบักเป้าหมาย maven สำหรับโมดูลที่มีไฟล์ปัจจุบัน หรือในโมดูลรูท
  • การดำเนินการเพื่อเปิดเทอร์มินัลที่เส้นทางปัจจุบันไปยังโมดูล maven
  • การดำเนินการเพื่อรัน/ดีบักไฟล์ทดสอบปัจจุบัน หากมีการกำหนดค่า maven-surefire-plugin ให้ข้ามหรือยกเว้นการทดสอบ เป้าหมาย "ยืนยัน" จะถูกนำมาใช้ รูปแบบ การกำหนดค่าต่างๆ สามารถพบได้บน GitHub

โค้ดเมตริก

ปลั๊กอินนี้มีตัวบ่งชี้แท็บตามการคำนวณความยากแบบกำหนดเองสำหรับไฟล์ Java พวกเขาให้คำแนะนำแก่นักพัฒนาในคลาสและวิธีการต่างๆ เพื่อให้เขาสามารถระบุสิ่งที่ต้องตรวจสอบได้อย่างง่ายดาย แม้ว่านี่จะไม่ใช่เมตริกมาตรฐาน แต่ก็เป็นการประมาณที่ใกล้เคียงกับความซับซ้อนของไซโคลมาติก คุณยังสามารถปรับแต่งการคำนวณความซับซ้อนสำหรับโครงการได้โดยการเปลี่ยนรายการการกำหนดค่าที่เหมาะสม

การจัดการสตริง

การสลับเคส การเรียงลำดับ การกรอง การซูม การจัดแนวคอลัมน์ การเกรปปิ้ง การ Escape การเข้ารหัส และอื่นๆ อีกมากมาย...

เจพีเอ บัดดี้

JPA Buddy ทำให้ทุกสิ่งที่เกี่ยวข้องกับ JPA ง่ายและรวดเร็ว มีเครื่องมือที่จะช่วยคุณทำงานกับ Hibernate, Spring Data JPA, Liquibase, Flyway คุณสมบัติที่สำคัญของ JPA Buddy:
  • เอนทิตี JPA: สร้างและแก้ไขเอนทิตี คุณลักษณะเอนทิตี การเรียกกลับวงจรชีวิต ดัชนี และข้อจำกัด รองรับตัวแปลง JPA และประเภทกำหนดเองของไฮเบอร์เนต ความสามารถในการใช้คำอธิบายประกอบลอมบอกสำหรับเอนทิตี
  • สร้างการใช้งานที่ถูกต้องของวิธีการเท่ากับ, hashCode และ toString สำหรับเอนทิตี JPA
  • เจตนาซอร์สโค้ด การตรวจสอบ และการแก้ไขด่วนสำหรับการประกาศเอนทิตี JPA
  • แสดงความสัมพันธ์เอนทิตีแบบกราฟิกในแผงโครงสร้าง JPA ใต้โหนดหน่วยถาวร
  • การสร้างบันทึกการเปลี่ยนแปลง Liquibase โดยอัตโนมัติและการโยกย้ายเวอร์ชัน Flyway: การเปรียบเทียบระหว่างฐานข้อมูลกับฐานข้อมูล โมเดลต่อฐานข้อมูล การเปรียบเทียบระหว่างโมเดลกับสแนปชอต
  • ผู้ออกแบบบันทึกการเปลี่ยนแปลง Visual Liquibase และความช่วยเหลือด้านการเขียนโค้ด: การสร้างและแก้ไขรายการ การอ้างอิงชื่อตาราง ชื่อคอลัมน์ ไฟล์ที่รวมไว้ และอื่นๆ
  • การดำเนินการ: สร้างสแน็ปช็อตของ Liquibase ดำเนินการคำสั่ง “Liquibase update” และ “Liquibase updateSQL”
  • Spring Data Repositories: การสร้างที่เก็บข้อมูล การสร้างวิธีการเก็บข้อมูล การแก้ไขคุณสมบัติของวิธีการ การสร้างการฉายภาพตามคลาสเอนทิตี การแตกแบบสอบถาม JPQL
  • Kotlin: นักออกแบบภาพทุกคนรองรับการสร้างโค้ดสำหรับอ็อบเจ็กต์และที่เก็บ Kotlin อย่างสมบูรณ์
ฉันพูดถึงปลั๊กอินห้าอันดับแรก แต่ฉันมีอีกหนึ่ง...

ไอคอนพิเศษ

นี่คือคอลเลกชันไอคอนที่เพิ่มทางลัดไปยังไฟล์ต่างๆ เช่น Markdown, Yaml, Maven, Git และอื่นๆ อีกมากมาย คุณจะคุ้นเคยกับสิ่งเหล่านี้เนื่องจากช่วยให้คุณจดจำไฟล์ได้อย่างง่ายดาย คุณจะต้องการมันอย่างแน่นอน
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION