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

วิธีดึงข้อมูลหัว (Head) จาก ArrayBlockingQueue ใน Android

บทนำ

ArrayBlockingQueue เป็น Queue แบบ Bounded (มีขีดจำกัดความจุ) ใช้ Array เป็นโครงสร้างภายใน ทำงานแบบ FIFO (First-In-First-Out) องค์ประกอบแรกที่เพิ่ม (Head) จะอยู่นานที่สุด องค์ประกอบสุดท้าย (Tail) จะอยู่สั้นที่สุด รองรับ Thread-safe และ Blocking operations

ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่

เปิด Android Studio เลือก File → New Project กรอกข้อมูลที่จำเป็น

ขั้นตอนที่ 2: ออกแบบ Layout (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <TextView
        android:id="@+id/actionEvent"
        android:textSize="40sp"
        android:layout_marginTop="30dp"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

</LinearLayout>

ขั้นตอนที่ 3: เขียนโค้ด Java (src/MainActivity.java)

package com.example.myapplication;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import java.util.concurrent.ArrayBlockingQueue;

public class MainActivity extends AppCompatActivity {

    ArrayBlockingQueue<String> arrayBlockingQueue;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // สร้าง Queue ความจุ 50
        arrayBlockingQueue = new ArrayBlockingQueue<>(50);
        final TextView actionEvent = findViewById(R.id.actionEvent);

        // เพิ่มข้อมูลตัวอย่าง
        arrayBlockingQueue.add("sai");
        arrayBlockingQueue.add("ram");
        arrayBlockingQueue.add("krishna");
        arrayBlockingQueue.add("prasad");

        // แสดง Queue ทั้งหมด
        actionEvent.setText("" + arrayBlockingQueue);

        // คลิกเพื่อดู Head element (peek)
        actionEvent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // peek() ดู Head โดยไม่ลบออก
                String head = arrayBlockingQueue.peek();
                actionEvent.setText("Head: " + head);
            }
        });
    }
}

การทดสอบแอปพลิเคชัน

รันแอปบนอุปกรณ์จริง

วิธีดึงข้อมูลหัว (Head) จาก ArrayBlockingQueue ใน Android

คลิก TextView จะแสดง Head element ("sai")

วิธีดึงข้อมูลหัว (Head) จาก ArrayBlockingQueue ใน Android

เมธอดสำคัญของ ArrayBlockingQueue

เมธอด คำอธิบาย คืนค่าเมื่อว่าง
peek() ดู Head โดยไม่ลบ null
element() ดู Head โดยไม่ลบ โยน NoSuchElementException
poll() ดึงและลบ Head null
remove() ดึงและลบ Head โยน NoSuchElementException
take() ดึงและลบ Head (Block จนกว่าจะมีข้อมูล) Block

สรุป

ใช้ peek() เพื่อดู Head element ของ ArrayBlockingQueue โดยไม่ลบออก เหมาะสำหรับตรวจสอบข้อมูลก่อนประมวลผลในระบบ Producer-Consumer