การเรียงและการย้อนกลับของลิสต์โดยใช้ 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);
| Input | Output |
|---|---|
| 33 39 80 56 83 -1 | 33 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
- Collections.sort()
- เรียงข้อมูลจากน้อยไปมากโดยอัตโนมัติ
- ใช้ได้กับ List ทุกประเภท
- รองรับทั้งตัวเลขและข้อความ
- Collections.reverse()
- กลับลำดับข้อมูลทั้งหมด
- ไม่จำเป็นต้องเรียงก่อนกลับลำดับ
- ทำงานได้เร็วกว่าการเรียงใหม่แบบมากไปน้อย
- ArrayList
- เพิ่มลดข้อมูลได้ง่าย
- ไม่ต้องกำหนดขนาดล่วงหน้า
- เข้าถึงข้อมูลได้รวดเร็ว
ปรับปรุงล่าสุด