Skip to Content
CoursesCSC102การเรียงและการย้อนกลับของลิสต์โดยใช้ Collections

การเรียงและการย้อนกลับของลิสต์โดยใช้ Collections

โจทย์

Given the list of positive integers without knowing a size of the list. The list ends when the integer -1 is provided. Your task is to write a program to sort the list and print it in ascending order and descending order.

Hint: You can use the following methods of Collections framework.

  • Collections.sort(List<T> list);

  • Collections.reverse(List<?> list);

InputOutput
33 39 80 56 83 -133 39 56 80 83
83 80 56 39 33

โค้ด

import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Program { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<>(); while (true) { int number = scanner.nextInt(); if (number == -1) break; list.add(number); } Collections.sort(list); for (Integer integer : list) { System.out.printf("%d ", integer); } System.out.println(); Collections.reverse(list); for (Integer integer : list) { System.out.printf("%d ", integer); } } }

คำอธิบาย

การนำเข้าไลบรารี่

import java.util.ArrayList; // สำหรับสร้าง ArrayList import java.util.Collections; // สำหรับใช้ sort และ reverse import java.util.Scanner; // สำหรับรับข้อมูล

1. การประกาศตัวแปรและเตรียมรับข้อมูล

Scanner scanner = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<>(); // สร้าง ArrayList เปล่า

2. การรับข้อมูลเข้า ArrayList

while (true) { int number = scanner.nextInt(); // รับตัวเลข if (number == -1) break; // ถ้าเจอ -1 ให้หยุด list.add(number); // เพิ่มตัวเลขเข้า ArrayList }

3. การเรียงลำดับและแสดงผลจากน้อยไปมาก

Collections.sort(list); // เรียงจากน้อยไปมาก for (Integer integer : list) { // วนลูปแสดงผล System.out.printf("%d ", integer); }

4. การเรียงลำดับและแสดงผลจากมากไปน้อย

System.out.println(); // ขึ้นบรรทัดใหม่ Collections.reverse(list); // กลับลำดับข้อมูล for (Integer integer : list) { // วนลูปแสดงผล System.out.printf("%d ", integer); }

แผนภาพการทำงาน

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

ตัวอย่าง: รับข้อมูล 33 39 80 56 83 -1

ขั้นตอนการทำงาน: 1. การรับข้อมูล: ArrayList = [33] ArrayList = [33, 39] ArrayList = [33, 39, 80] ArrayList = [33, 39, 80, 56] ArrayList = [33, 39, 80, 56, 83] พบ -1 → หยุดรับข้อมูล 2. การเรียงข้อมูล: Collections.sort() [33, 39, 80, 56, 83] → [33, 39, 56, 80, 83] แสดงผล: 33 39 56 80 83 3. การกลับข้อมูล: Collections.reverse() [33, 39, 56, 80, 83] → [83, 80, 56, 39, 33] แสดงผล: 83 80 56 39 33

เทคนิคการใช้ Collections Framework

  1. Collections.sort()
  • เรียงข้อมูลจากน้อยไปมากโดยอัตโนมัติ
  • ใช้ได้กับ List ทุกประเภท
  • รองรับทั้งตัวเลขและข้อความ
  1. Collections.reverse()
  • กลับลำดับข้อมูลทั้งหมด
  • ไม่จำเป็นต้องเรียงก่อนกลับลำดับ
  • ทำงานได้เร็วกว่าการเรียงใหม่แบบมากไปน้อย
  1. ArrayList
  • เพิ่มลดข้อมูลได้ง่าย
  • ไม่ต้องกำหนดขนาดล่วงหน้า
  • เข้าถึงข้อมูลได้รวดเร็ว
ปรับปรุงล่าสุด