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

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

LinkedBlockingDeque và offer()

LinkedBlockingDeque có thể bị giới hạn dung lượng (bounded) nếu truyền capacity vào constructor. offer(E e) (thêm vào cuối) trả về false nếu deque đã đầy, thay vì ném exception như add().

Ví dụ thêm vào cuối (offerLast tương đương)

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.LinkedBlockingDeque;

public class MainActivity extends AppCompatActivity {

    private LinkedBlockingDeque<String> linkedBlockingDeque;

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

        // Không truyền capacity => unbounded
        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");

        actionEvent.setText("Deque: " + linkedBlockingDeque);

        actionEvent.setOnClickListener(v -> {
            // Thêm vào cuối
            linkedBlockingDeque.offer("tutrialspoint"); // typo trong gốc
            actionEvent.setText("Sau offer: " + linkedBlockingDeque);
        });
    }
}

Lưu ý

Nếu khởi tạo new LinkedBlockingDeque<>(3) (giới hạn 3 phần tử), offer sẽ trả về false khi đã đầy.