Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

โปรแกรม Java แบ่งลิสต์เป็นสองครึ่ง


บทนำ

ในบทความนี้ เราจะเรียนรู้วิธีการแบ่งลิสต์ (Split a list) เป็นสองครึ่ง (Two halves) ลิสต์ (List) เป็นคอลเลกชันที่มีลำดับ ช่วยให้จัดเก็บและเข้าถึงสมาชิกแบบลำดับได้ มีเมธอดแบบดัชนีสำหรับแทรก อัปเดต ลบ และค้นหา สามารถมีสมาชิกซ้ำได้

ตัวอย่างการทำงาน

อินพุทตัวอย่าง:

Input list :[Java, Python, JavaScript, Shell, Scala]

เอาต์พุทที่คาดหวัง:

The first half of the list is: [Java, Python]
The second half of the list is: [JavaScript, Shell, Scala]

อัลกอริทึม

ขั้นตอนที่ 1 - เริ่มต้น
ขั้นตอนที่ 2 - ประกาศ ArrayList สามตัว: input_list, first_list, second_list
ขั้นตอนที่ 3 - กำหนดค่า
ขั้นตอนที่ 4 - หาขนาดอาร์เรย์ด้วย .size()
ขั้นตอนที่ 5 - วนลูป input_list เพิ่มสมาชิกที่ index < size/2 ไป first_list และ index >= size/2 ไป second_list
ขั้นตอนที่ 6 - แสดงผลลัพธ์
ขั้นตอนที่ 7 - จบการทำงาน

ตัวอย่างที่ 1: เขียนในฟังก์ชัน main โดยตรง

import java.util.ArrayList;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        System.out.println("Required packages have been imported");
        List input_list = new ArrayList();
        input_list.add("Java");
        input_list.add("Python");
        input_list.add("JavaScript");
        input_list.add("Shell");
        input_list.add("Scala");
        System.out.println("The list is defined as " + input_list);
        
        List first_list = new ArrayList();
        List second_list = new ArrayList();
        int size = input_list.size();
        System.out.println("\nThe first half of the list is: ");
        for (int i = 0; i < size / 2; i++)
            first_list.add(input_list.get(i));
        System.out.println(first_list);
        
        System.out.println("The second half of the list is: ");
        for (int i = size / 2; i < size; i++)
            second_list.add(input_list.get(i));
        System.out.println(second_list);
    }
}

เอาต์พุท

Required packages have been imported
The list is defined as [Java, Python, JavaScript, Shell, Scala]
The first half of the list is: [Java, Python]
The second half of the list is: [JavaScript, Shell, Scala]

ตัวอย่างที่ 2: ใช้เมธอดแยก (Object-Oriented Style)

import java.util.ArrayList;
import java.util.List;

public class Demo {
    static void split_list(List input_list) {
        List first_list = new ArrayList();
        List second_list = new ArrayList();
        int size = input_list.size();
        System.out.println("\nThe first half of the list is: ");
        for (int i = 0; i < size / 2; i++)
            first_list.add(input_list.get(i));
        System.out.println(first_list);
        System.out.println("The second half of the list is: ");
        for (int i = size / 2; i < size; i++)
            second_list.add(input_list.get(i));
        System.out.println(second_list);
    }
    
    public static void main(String[] args) {
        System.out.println("Required packages have been imported");
        List input_list = new ArrayList();
        input_list.add("Java");
        input_list.add("Python");
        input_list.add("JavaScript");
        input_list.add("Shell");
        input_list.add("Scala");
        System.out.println("The list is defined as " + input_list);
        split_list(input_list);
    }
}

เอาต์พุท

Required packages have been imported
The list is defined as [Java, Python, JavaScript, Shell, Scala]
The first half of the list is: [Java, Python]
The second half of the list is: [JavaScript, Shell, Scala]

วิธีอื่นๆ (Java 8+):

// ใช้ subList (ไม่สร้างลิสต์ใหม่ - เป็น view)
List firstHalf = input_list.subList(0, size / 2);
List secondHalf = input_list.subList(size / 2, size);

// ใช้ Stream API
List first = input_list.stream().limit(size / 2).collect(Collectors.toList());
List second = input_list.stream().skip(size / 2).collect(Collectors.toList());

// ใช้ Collections.partition (Guava) หรือ List.partition (Java 21+)

หมายเหตุ: เมื่อจำนวนสมาชิกเป็นคี่ ครึ่งหลังจะมีสมาชิกมากกว่าครึ่งหนึ่ง 1 ตัว