JavaRush /จาวาบล็อก /Random-TH /คอฟฟี่เบรค #196. วิธีอ่านไฟล์อย่างถูกต้องใน Java 8 และ Ja...

คอฟฟี่เบรค #196. วิธีอ่านไฟล์อย่างถูกต้องใน Java 8 และ Java 11 วิธีเรียงลำดับรายการใน Java วิธีการต่างๆในการเรียงลำดับรายการใน Java

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

วิธีอ่านไฟล์อย่างถูกต้องใน Java 8 และ Java 11

แหล่งที่มา: ปานกลาง ด้วยบทช่วยสอนนี้ คุณจะได้เรียนรู้เคล็ดลับหลายประการที่เป็นประโยชน์เมื่อประมวลผลและอ่านไฟล์ขนาดใหญ่ใน Java 8 และ Java 11 คอฟฟี่เบรค #196.  วิธีอ่านไฟล์อย่างถูกต้องใน Java 8 และ Java 11 วิธีเรียงลำดับรายการใน Java วิธีการต่างๆในการเรียงลำดับรายการใน Java - 1การอ่านไฟล์ที่อยู่บนดิสก์ของคอมพิวเตอร์ของคุณนั้นค่อนข้างง่ายใน Java ใน Java 8 และใหม่กว่า คุณสามารถใช้ คลาส Files สำหรับไฟล์ . มันเป็นส่วนหนึ่งของ แพ็คเกจjava.nio.fileซึ่งเปิดตัวครั้งแรกใน Java 7 เพื่อให้วิธีทำงานกับไฟล์และไดเร็กทอรีมีประสิทธิภาพมากขึ้น ด้านล่างนี้เป็นตัวอย่างของวิธีที่คุณสามารถใช้ คลาส Filesเพื่ออ่านไฟล์ใน Java 8
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;

public class FileReader {
    public static void main(String[] args) {
        try {
            Path path = Paths.get("file.txt");
            String content = Files.readString(path);
            System.out.println(content);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
ตัวอย่างนี้ใช้ เมธอด Files.readAllLines()เพื่ออ่านบรรทัดทั้งหมดของไฟล์และจัดเก็บไว้ใน ไฟล์ List<String> Paths.get()วิธีการใช้ในการสร้าง วัตถุ เส้นทางที่เป็นตัวแทนของไฟล์ คุณยังสามารถใช้Files.lines :
import java.io.IOException;
import java.nio.file.Paths;
import java.nio.file.Files;

public class FileReader {
    public static void main(String[] args) {
        try {
            Files.lines(Paths.get("file.txt"))
                .forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
ใน Java 11 หากต้องการอ่านไฟล์คุณสามารถใช้ เมธอด readString()โดยจะอ่านไฟล์ทั้งหมดเป็นสตริง นี่คือตัวอย่างวิธีการใช้งาน
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;

public class FileReader {
    public static void main(String[] args) {
        try {
            Path path = Paths.get("file.txt");
            String content = Files.readString(path);
            System.out.println(content);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
เมื่อทำงานกับไฟล์ขนาดใหญ่ใน Java สิ่งสำคัญคือต้องคำนึงถึงหลักเกณฑ์บางประการ:
  1. ใช้ เครื่อง อ่านบัฟเฟอร์ ช่วยให้คุณสามารถอ่านข้อมูลจำนวนมากในแต่ละครั้ง แทนที่จะอ่านอักขระตัวเดียวหรือทีละบรรทัด
  2. ใช้ขนาดบัฟเฟอร์ที่เล็กลง : เมื่อใช้เครื่องอ่านแบบบัฟเฟอร์ ขนาดบัฟเฟอร์ที่เล็กลงจะช่วยลดการใช้หน่วยความจำได้
  3. ใช้API สตรีมมิ่ง แทนที่จะโหลดไฟล์ทั้งหมดลงในหน่วยความจำ API การสตรีมช่วยให้คุณสามารถอ่านไฟล์เป็นบางส่วนได้
  4. ใช้ เธรดแบบขนานเพื่อประมวลผลไฟล์โดยเฉพาะอย่างยิ่งหากไฟล์มีขนาดใหญ่
  5. ปิดไฟล์หลังจากอ่าน: สิ่งนี้จะช่วยเพิ่มทรัพยากร
  6. ใช้ คำสั่ง try-with-resourcesเพื่อปิดไฟล์โดยอัตโนมัติหลังจากอ่านแล้ว เพื่อให้แน่ใจว่าไฟล์จะถูกปิดแม้ว่าจะมีข้อยกเว้นเกิดขึ้นในขณะที่อ่านก็ตาม
ด้านล่างนี้เป็นตัวอย่างของการใช้ คำสั่ง try-with-resourcesเพื่ออ่านไฟล์
import java.io.IOException;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.util.List;

public class FileReader {
    public static void main(String[] args) {
        try (BufferedReader reader = Files.newBufferedReader(Paths.get("file.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
ในตัวอย่างนี้ ออบเจ็กต์ BufferedReaderจะถูกสร้างขึ้นภายในคำสั่ง try-with-resources ซึ่งช่วยให้มั่นใจว่าจะถูกปิดโดยอัตโนมัติเมื่อออกจากบล็อก แม้ว่าจะมีข้อยกเว้นเกิดขึ้นก็ตาม ดังนั้น เมื่ออ่านไฟล์ขนาดใหญ่ใน Java วิธีที่ดีที่สุดคือใช้ตัวอ่านแบบบัฟเฟอร์ ขนาดบัฟเฟอร์ที่เล็กลง API การสตรีม สตรีมแบบขนาน และปิดไฟล์หลังจากอ่านแล้ว นอกจากนี้ การใช้ คำสั่ง try-with-resourcesสามารถช่วยให้แน่ใจว่าไฟล์ถูกปิดอย่างถูกต้องในกรณีที่มีข้อยกเว้น

วิธีเรียงลำดับรายการใน Java วิธีการเรียงลำดับรายการต่างๆ ใน ​​Java

ที่มา: FreeCodeCamp โพสต์นี้ครอบคลุมวิธีการเรียงลำดับ รายการต่างๆใน ​​Java: Collections.sort() , stream.sorted( ) และList.sort() คอฟฟี่เบรค #196.  วิธีอ่านไฟล์อย่างถูกต้องใน Java 8 และ Java 11 วิธีเรียงลำดับรายการใน Java วิธีการต่างๆในการเรียงลำดับรายการใน Java - 2บางครั้งข้อมูลจำเป็นต้องจัดเรียงตามลำดับที่เฉพาะเจาะจงเพื่อให้เข้าใจ ค้นหา และประมวลผลได้ง่ายขึ้น เราเรียกกระบวนการนี้ว่าการเรียงลำดับ เมื่อใช้การเรียงลำดับ คุณสามารถจัดระเบียบข้อมูลได้ไม่เฉพาะในลำดับเฉพาะเท่านั้น แต่ยังเป็นไปตามเกณฑ์ด้วย เช่น ตามประเภทข้อมูล รวมถึงตัวเลข สตริง และออบเจ็กต์ ภาษา Java มีวิธีการเรียง ลำดับในตัว เช่น ใน คลาส Collections การเรียงลำดับ Java มักใช้ในแอปพลิเคชันอีคอมเมิร์ซที่ผู้ใช้ต้องการแสดงรายการผลิตภัณฑ์ สามารถจัดเรียงผลิตภัณฑ์ได้หลายวิธีขึ้นอยู่กับข้อกำหนดที่ผู้ใช้กำหนด เช่น ราคา การให้คะแนน แบรนด์ และอื่นๆ ตัวอย่างเช่น หากผู้ใช้ต้องการดูผลิตภัณฑ์ทั้งหมดเรียงตามราคาจากน้อยไปมาก แอปพลิเคชันสามารถใช้อัลกอริธึมการเรียงลำดับเพื่อจัดเรียงผลิตภัณฑ์ตามลำดับนั้น ด้วยวิธีนี้ เมื่อผู้ใช้เรียกดูผลิตภัณฑ์ เขาจะสามารถเห็นผลิตภัณฑ์ที่ถูกที่สุดก่อน และตัดสินใจซื้อตามลำดับ

วิธีใช้เมธอด Collections.Sort() ใน Java

หนึ่งในวิธีทั่วไปในการจัดเรียงข้อมูลใน Java คือการใช้เมธอดCollections.sort() ตามค่าเริ่มต้น จะเรียงลำดับรายการจากน้อยไปหามาก ต่อไปนี้เป็นตัวอย่างการใช้ เมธอดCollections.sort()เพื่อเรียงลำดับรายการจำนวนเต็ม:
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<Integer>();
        numbers.add(3);
        numbers.add(1);
        numbers.add(4);
        numbers.add(2);

        Collections.sort(numbers);

        System.out.println("Sorted List: " + numbers);
    }
}
โค้ดด้านบนจะสร้างรายการจำนวนเต็ม เพิ่มตัวเลขสี่ตัวลงไป เรียงลำดับรายการ จากนั้นพิมพ์รายการที่เรียงลำดับไปยังคอนโซล ใช้คลาสจาก Java Standard Library เพื่อดำเนินการ รวมถึงjava.util.Collections , java.util.Listและjava.util.ArrayList ผลลัพธ์มีดังต่อไปนี้:
//รายการเรียงลำดับเอาต์พุต: [1, 2, 3, 4]
คุณยังสามารถจัดเรียงรายการออบเจ็ ก ต์แบบกำหนดเองได้ โดยใช้ เมธอด Collections.sort() ในการดำเนินการนี้ คุณจะต้องสร้างตัวเปรียบเทียบและส่ง ผ่านเป็นอาร์กิวเมนต์ไปยังเมธอดCollections.sort() ตัวเปรียบเทียบคืออ็อบเจ็กต์ที่ใช้ อินเท อ ร์เฟซ java.util.Comparator มีเมธอด callable เดียวคือcomparison()ซึ่งเปรียบเทียบสองอ็อบเจ็กต์และส่งกลับจำนวนเต็มที่ระบุลำดับสัมพัทธ์ ต่อไปนี้คือตัวอย่างวิธีใช้เครื่องมือเปรียบเทียบเพื่อจัดเรียงรายการออบเจ็กต์ที่กำหนดเอง:
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        List<Person> people = new ArrayList<>();
        people.add(new Person("Alice", 25));
        people.add(new Person("Bob", 30));
        people.add(new Person("Charlie", 20));

        Collections.sort(people, new PersonComparator());

        System.out.println("Sorted List: " + people);
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return name + " (" + age + ")";
    }
}

class PersonComparator implements java.util.Comparator<Person> {
    @Override
    public int compare(Person a, Person b) {
        return a.getAge() - b.getAge();
    }
}
โค้ดที่แสดงด้านบนจะสร้างรายการ วัตถุ Personเพิ่ม วัตถุ Person หลายรายการลงในรายการ เรียงลำดับรายการโดยใช้ตัวเปรียบเทียบที่กำหนดเอง ( PersonComparator ) จากนั้นพิมพ์รายการที่เรียงลำดับ คลาสPersonมีสองฟิลด์ ได้แก่nameและageตลอดจนเมธอด getter สำหรับฟิลด์เหล่านี้ คลาสPersonComparatorใช้ อินเทอร์เฟซ Comparatorและแทนที่วิธีการเปรียบเทียบเพื่อเรียง ลำดับอ็อบเจ็กต์ Personตามอายุ ( age ) ผลลัพธ์ของโปรแกรมนี้จะเป็นดังนี้:
// รายการเรียงลำดับเอาท์พุท: [Charlie (20), Alice (25), Bob (30)]
เมธอดCollections.sort()เหมาะที่สุดเมื่อคุณมีคอลเลกชันของออบเจ็กต์ที่คุณต้องการจัดเรียงตามฟิลด์ตั้งแต่หนึ่งฟิลด์ขึ้นไป ตัวอย่างเช่น หากคุณมีคอลเลกชันของ ออบเจ็กต์ Employeeและต้องการจัดเรียงตามนามสกุล คุณสามารถใช้เมธอด Collections.sort()และส่งผ่านตัวเปรียบเทียบแบบกำหนดเองที่เปรียบเทียบนามสกุลของออบเจ็ กต์ Employee

วิธีการใช้เมธอด List.Sort() ใน Java

วิธีนี้จะเรียงลำดับรายการจากน้อยไปหามาก นี่คือวิธีการทำงาน:
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(5, 3, 2, 4, 1);
        numbers.sort(null);
        System.out.println(numbers); // prints [1, 2, 3, 4, 5]
    }
}
ภายใน เมธอด หลักArrays.asListจะสร้างรายการจำนวนเต็มที่เรียกว่าตัวเลข จากนั้นโค้ดจะเรียงลำดับรายการตัวเลขนี้โดยใช้วิธีการเรียงลำดับเริ่มต้น เนื่องจากค่าnull จะ ถูกส่งผ่านไปยังวิธีการเรียงลำดับ ในที่สุด รายการที่เรียงลำดับจะถูกพิมพ์ไปยังคอนโซลโดยใช้เมธอดSystem.out.println เอาต์พุตคือ[1, 2, 3, 4, 5 ] List.sort()มีประโยชน์เมื่อคุณมีรายการองค์ประกอบที่ต้องเรียงลำดับ ตัวอย่างเช่น หากคุณมีรายการสตริงและต้องการเรียงลำดับตามตัวอักษร คุณสามารถใช้เมธอดList.sort() เพื่อทำสิ่ง นี้ List.sort()เป็นวิธีการอินสแตนซ์ของ คลาส Listและเรียงลำดับองค์ประกอบตามลำดับที่กำหนดโดยลำดับตามธรรมชาติหรือการ ใช้งาน Icomparer ที่กำหนด

วิธีใช้วิธี stream.sorted() ใน Java

ใน Java 8 และใหม่กว่า คุณสามารถใช้ Stream API เพื่อจัดเรียงรายการได้ มันมี วิธีการ เรียงลำดับซึ่งสามารถใช้เพื่อเรียงลำดับองค์ประกอบของกระแสข้อมูล ต่อไปนี้คือตัวอย่างวิธีจัดเรียงรายการจำนวนเต็มโดยใช้สตรีม:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {

        List<Integer> numbers = Arrays.asList(5, 3, 2, 4, 1);
        List<Integer> sortedList = numbers.stream().sorted().collect(Collectors.toList());
        System.out.println(sortedList); // prints [1, 2, 3, 4, 5]

    }
}
อย่างที่คุณเห็น รายการตัวเลขจะถูกแปลงเป็นสตรีมโดยใช้เมธอดstream() จากนั้นจึงเรียกเมธอด sorted()เพื่อจัดเรียงองค์ประกอบในสตรีม collect(Collectors.toList())วิธีการใช้ในการรวบรวมองค์ประกอบที่เรียงลำดับกลับเข้าไปในรายการ ผลลัพธ์คือรายการใหม่ที่มีองค์ประกอบที่เรียงลำดับ เอาต์พุตคือ[1, 2, 3, 4, 5 ] stream.sorted()เหมาะที่สุดเมื่อคุณมีสตรีมขององค์ประกอบที่จำเป็นต้องเรียงลำดับ ตัวอย่างเช่น หากคุณมีสตรีมจำนวนเต็มและต้องการเรียงลำดับจากน้อยไปหามาก ควรใช้เมธอดstream.Sorted() สำหรับสิ่ง นี้

บทสรุป

ในบทช่วยสอนนี้ คุณได้เรียนรู้ว่ามีหลายวิธีในการจัดเรียงรายการใน Java - วิธีCollections.sort() วิธี stream.sorted ()และวิธีList.sort() วิธีใดดีที่สุดที่จะใช้ขึ้นอยู่กับข้อกำหนดเฉพาะของงานที่ทำอยู่ ฉันหวังว่าบทความนี้จะให้ข้อมูลที่ถูกต้องเกี่ยวกับวิธีเรียงลำดับรายการใน Java ขอให้มีความสุขในการเขียนโค้ด!
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION