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

Cách dùng contains() trong PriorityBlockingQueue Android

PriorityBlockingQueue là gì?

PriorityBlockingQueue là hàng đợi không giới hạn (unbounded) tuân theo thứ tự ưu tiên (priority order). Nó không cho phép phần tử null và rất hữu ích trong xử lý đa luồng để tránh lỗi OutOfMemoryError khi hàng đợi đầy (vì nó không bao giờ đầy).

Ví dụ: Kiểm tra phần tử tồn tại với contains()

Bước 1 & 2: Tạo project và Layout

Tương tự các ví dụ trước, layout chỉ chứa một TextView id actionEvent.

Bước 3: MainActivity.java

package com.example.myapplication;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.TextView;
import java.util.concurrent.PriorityBlockingQueue;

public class MainActivity extends AppCompatActivity {

    private PriorityBlockingQueue<String> priorityBlockingQueue;

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

        priorityBlockingQueue = new PriorityBlockingQueue<>();
        final TextView actionEvent = findViewById(R.id.actionEvent);

        // Thêm phần tử (sắp xếp theo thứ tự tự nhiên của String: alphabet)
        priorityBlockingQueue.add("sai");
        priorityBlockingQueue.add("ram");
        priorityBlockingQueue.add("krishna");
        priorityBlockingQueue.add("prasad");
        priorityBlockingQueue.add("ram");

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

        actionEvent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Kiểm tra "prasad" có trong queue không
                boolean exists = priorityBlockingQueue.contains("prasad");
                actionEvent.setText("Contains 'prasad': " + exists); // true
            }
        });
    }
}

Giải thích

Vì String implements Comparable, các phần tử được sắp xếp theo thứ tự bảng chữ cái. contains() duyệt qua nội bộ để tìm kiếm, trả về true nếu tìm thấy.