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

Cách tìm kiếm phần tử trong ArrayBlockingQueue Android

Giới thiệu về ArrayBlockingQueue

ArrayBlockingQueue là queue bounded, array-backed, FIFO, thread-safe. Phương thức contains(Object o) kiểm tra sự tồn tại (O(n)). Mã gốc dùng offer() sai ngữ cảnh - offer() dùng để THÊM, không phải tìm kiếm. Ví dụ này sửa đúng logic.

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) {
                // SỬA: Dùng contains() để TÌM KIẾM, không dùng offer()
                boolean found = arrayBlockingQueue.contains("prasad");
                actionEvent.setText("Tìm 'prasad': " + found);
            }
        });
    }
}

Chạy ứng dụng

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

Cách tìm kiếm phần tử trong ArrayBlockingQueue Android

Nhấn vào TextView để tìm kiếm:

Cách tìm kiếm phần tử trong ArrayBlockingQueue Android

Sửa lỗi mã gốc: Mã gốc dùng arrayBlockingQueue.offer("prasad") - đây là phương thức THÊM phần tử (trả về true nếu thêm thành công), KHÔNG phải tìm kiếm. Phương thức đúng cho tìm kiếm là contains("prasad").

Các phương thức liên quan:
Phương thứcMục đíchTrả về
contains(o)Kiểm tra tồn tạiboolean
remove(o)Xóa lần xuất hiện đầu tiênboolean
offer(e)Thêm nếu còn chỗboolean
peek()Xem headE hoặc null