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

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

offer() vs add()

Trong PriorityBlockingQueue (unbounded), offer(E e) và add(E e) hành vi giống nhau: luôn trả về true và không bao giờ ném IllegalStateException vì hàng đợi không bao giờ đầy. offer là phương thức của interface Queue.

Ví dụ thêm phần tử khi click

actionEvent.setOnClickListener(v -> {
    priorityBlockingQueue.offer("tutorialspoint.com");
    actionEvent.setText("Queue: " + priorityBlockingQueue);
});

MainActivity.java hoàn chỉnh

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);

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

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

        actionEvent.setOnClickListener(v -> {
            priorityBlockingQueue.offer("tutorialspoint.com");
            actionEvent.setText("Sau offer: " + priorityBlockingQueue);
        });
    }
}

Kết quả

Phần tử mới "tutorialspoint.com" được chèn vào vị trí phù hợp theo thứ tự alphabet (priority).