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

วิธีใช้ removeLastOccurrence() ใน Android LinkedBlockingDeque

ก่อนเข้าตัวอย่าง ควรทราบว่า LinkedBlockingDeque คืออะไร นี่คือการใช้งาน (implementation) ของ Collection interface และ AbstractQueue class มีขอบเขตเลือกได้ (optional boundaries) โดยอิงจากโหนดลิงก์ (linked nodes) สามารถส่งขนาดหน่วยความจำให้กับ Constructor ช่วยลดการสูญเสียหน่วยความจำใน Android

ตัวอย่างการใช้งาน removeLastOccurrence() ใน Android LinkedBlockingDeque

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

ไปที่ File → New Project และกรอกรายละเอียดที่จำเป็นทั้งหมด

ขั้นตอนที่ 2: เพิ่มโค้ดใน 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>

ใช้ TextView เพื่อแสดงองค์ประกอบของ LinkedBlockingDeque

ขั้นตอนที่ 3: เพิ่มโค้ดใน 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.LinkedBlockingDeque;

public class MainActivity extends AppCompatActivity {
    LinkedBlockingDeque<String> linkedBlockingDeque;

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

        linkedBlockingDeque = new LinkedBlockingDeque<>();
        final TextView actionEvent = findViewById(R.id.actionEvent);

        linkedBlockingDeque.add("sai");
        linkedBlockingDeque.add("ram");
        linkedBlockingDeque.add("krishna");
        linkedBlockingDeque.add("prasad");
        linkedBlockingDeque.add("ram"); // เพิ่ม "ram" ซ้ำ

        actionEvent.setText("" + linkedBlockingDeque);

        actionEvent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                linkedBlockingDeque.removeLastOccurrence("ram");
                actionEvent.setText("" + linkedBlockingDeque);
            }
        });
    }
}

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

รันแอปพลิเคชันบนอุปกรณ์ Android จริง ใน Android Studio คลิกไอคอน Run เลือกอุปกรณ์ แล้วตรวจสอบหน้าจอเริ่มต้น

วิธีใช้ removeLastOccurrence() ใน Android LinkedBlockingDeque

คลิกที่ TextView จะลบ "ram" ตัวสุดท้าย (Last Occurrence) และแสดงผลที่เหลือ

วิธีใช้ removeLastOccurrence() ใน Android LinkedBlockingDeque

คำอธิบายเพิ่มเติม

  • removeLastOccurrence(Object) ลบองค์ประกอบที่ตรงกับอ็อบเจกต์ที่ระบุ ตัวที่ปรากฏ สุดท้าย (closest to the tail)
  • คืนค่า true หากลบสำเร็จ, false หากไม่พบองค์ประกอบ
  • LinkedBlockingDeque รองรับการ block เมื่อคิวเต็ม (หากกำหนด capacity) หรือว่าง ระหว่างการ take/put
  • เหมาะสำหรับ Producer-Consumer pattern ในมัลติเธรด