Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách xóa phần tử khỏi ArrayBlockingQueue trong Android

Giới thiệu về ArrayBlockingQueue

ArrayBlockingQueue là queue bounded, array-backed, FIFO, thread-safe. Có nhiều phương thức xóa với hành vi khác nhau khi rỗng/đầy.

Bước 1: Tạo dự án mới

Mở Android Studio, chọn File → New Project, điền thông tin cần thiết.

Bước 2: Thiết kế giao diện (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>

Bước 3: Viết logic (src/MainActivity.java)

package com.example.myapplication;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v7.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);

        arrayBlockingQueue = new ArrayBlockingQueue<>(50);
        final TextView actionEvent = findViewById(R.id.actionEvent);

        arrayBlockingQueue.add("sai");
        arrayBlockingQueue.add("ram");
        arrayBlockingQueue.add("krishna");
        arrayBlockingQueue.add("prasad");

        actionEvent.setText("Queue: " + arrayBlockingQueue.toString());

        actionEvent.setOnClickListener(new View.OnClickListener() {
            @SuppressLint("SetTextI18n")
            @Override
            public void onClick(View v) {
                // Xóa phần tử "prasad" (xóa lần xuất hiện đầu tiên)
                boolean removed = arrayBlockingQueue.remove("prasad");
                actionEvent.setText("Removed: " + removed + "\n" + arrayBlockingQueue.toString());
            }
        });
    }
}

Chạy ứng dụng

Kết nối thiết bị và chạy ứng dụng.

Cách xóa phần tử khỏi ArrayBlockingQueue trong Android

Nhấn vào TextView để xóa "prasad":

Cách xóa phần tử khỏi ArrayBlockingQueue trong Android

Các phương thức xóa trong ArrayBlockingQueue:
Phương thứcHành viTrả vềKhi rỗng/không tìm thấy
remove(Object o)Xóa lần đầu tìm thấy obooleanfalse nếu không tìm thấy
poll()Lấy VÀ xóa headEnull
remove()Lấy VÀ xóa headENém NoSuchElementException
take()Lấy VÀ xóa head, BLOCKEChờ đến khi có
clear()Xóa TẤT CẢvoid-
drainTo(c)Chuyển tất cả sang collection cint (số lượng)-
Lưu ý: remove(Object) duyệt O(n). Thread-safe. Iterator fail-fast.