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

วิธีดึงข้อมูลตัวสุดท้าย (Last) จาก ConcurrentLinkedDeque ใน Android

บทนำ

ConcurrentLinkedDeque เป็น Deque แบบ Unbounded, Thread-safe ตัวอย่างนี้สาธิตการใช้ getLast() ดึงองค์ประกอบตัวสุดท้าย (Tail)

ขั้นตอนที่ 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);

        // คลิกเพื่อดู Last element
        actionEvent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // getLast() ดึง Tail - โยน Exception หากว่าง
                String last = concurrentLinkedDeque.getLast();
                actionEvent.setText("Last: " + last);
            }
        });
    }
}

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

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

วิธีดึงข้อมูลตัวสุดท้าย (Last) จาก ConcurrentLinkedDeque ใน Android

คลิก TextView จะแสดง Last element ("prasad")

วิธีดึงข้อมูลตัวสุดท้าย (Last) จาก ConcurrentLinkedDeque ใน Android

เปรียบเทียบ getLast() vs peekLast()

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

เมธอด Deque สำคัญ (สรุป)

  • Head (Front): addFirst, offerFirst, push, getFirst, peekFirst, removeFirst, pollFirst, pop
  • Tail (Rear): addLast, offerLast, add, offer, getLast, peekLast, removeLast, pollLast

สรุป

ใช้ getLast() ดึง Tail ของ ConcurrentLinkedDeque เมื่อมั่นใจว่ามีข้อมูล หากไม่แน่ใจใช้ peekLast() แทน