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

วิธีดึงข้อมูลตัวแรก (First) จาก ConcurrentLinkedDeque ใน Android

บทนำ

ConcurrentLinkedDeque เป็น Deque แบบ Unbounded และ Thread-safe ตัวอย่างนี้สาธิตการใช้ getFirst() เพื่อดึงองค์ประกอบตัวแรก (Head) ของ Deque

ขั้นตอนที่ 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.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import java.util.concurrent.ConcurrentLinkedDeque;

public class MainActivity extends AppCompatActivity {

    ConcurrentLinkedDeque<String> concurrentLinkedDeque;

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        concurrentLinkedDeque = new ConcurrentLinkedDeque<>();
        final TextView actionEvent = findViewById(R.id.actionEvent);

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

        actionEvent.setText("" + concurrentLinkedDeque);

        // คลิกเพื่อดู First element
        actionEvent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // getFirst() ดึงตัวแรก (Head) - โยน Exception หากว่าง
                String first = concurrentLinkedDeque.getFirst();
                actionEvent.setText("First: " + first);
            }
        });
    }
}

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

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

วิธีดึงข้อมูลตัวแรก (First) จาก ConcurrentLinkedDeque ใน Android

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

วิธีดึงข้อมูลตัวแรก (First) จาก ConcurrentLinkedDeque ใน Android

เปรียบเทียบ getFirst() vs peekFirst()

เมธอด พฤติกรรมเมื่อว่าง ใช้เมื่อไหร่
getFirst() โยน NoSuchElementException มั่นใจว่ามีข้อมูลอยู่แล้ว
peekFirst() คืน null ไม่แน่ใจว่ามีข้อมูลหรือไม่ (ปลอดภัยกว่า)

เมธอด Deque ที่เกี่ยวข้อง

  • getLast() / peekLast() - ดึง/ดู ตัวสุดท้าย (Tail)
  • removeFirst() / pollFirst() - ลบและคืนค่า Head
  • removeLast() / pollLast() - ลบและคืนค่า Tail
  • addFirst() / addLast() - เพิ่มที่ Head/Tail

สรุป

ใช้ getFirst() ดึง Head ของ ConcurrentLinkedDeque เมื่อมั่นใจว่ามีข้อมูล หากไม่แน่ใจใช้ peekFirst() แทนเพื่อป้องกัน Exception