Giới thiệu LinkedBlockingDeque
LinkedBlockingDeque triển khai interface Collection và lớp AbstractQueue. Nó cung cấp các giới hạn tùy chọn dựa trên linked nodes. Có thể truyền dung lượng bộ nhớ cho constructor để giúp quản lý bộ nhớ hiệu quả trên Android.
Ví dụ sử dụng removeLastOccurrence()
Phương thức removeLastOccurrence(Object o) xóa lần xuất hiện cuối cùng của phần tử được chỉ định trong deque.
Bước 1: Tạo dự án mới
Tạo project Android Studio mới.
Bước 2: Layout (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:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">
<TextView
android:id="@+id/actionEvent"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="30dp"
android:textSize="40sp" />
</LinearLayout>
Bước 3: Logic (src/MainActivity.java)
package com.example.myapplication;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import java.util.concurrent.LinkedBlockingDeque;
public class MainActivity extends AppCompatActivity {
LinkedBlockingDeque<String> linkedBlockingDeque;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
linkedBlockingDeque = new LinkedBlockingDeque<>();
final TextView actionEvent = findViewById(R.id.actionEvent);
// Thêm phần tử, "ram" xuất hiện 2 lần
linkedBlockingDeque.add("sai");
linkedBlockingDeque.add("ram");
linkedBlockingDeque.add("krishna");
linkedBlockingDeque.add("prasad");
linkedBlockingDeque.add("ram"); // Lần 2
actionEvent.setText("" + linkedBlockingDeque);
actionEvent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Xóa lần xuất hiện CUỐI CÙNG của "ram"
linkedBlockingDeque.removeLastOccurrence("ram");
actionEvent.setText("" + linkedBlockingDeque);
}
});
}
}
Kết quả minh họa
Trước khi click: [sai, ram, krishna, prasad, ram]
Sau khi click (gọi removeLastOccurrence("ram")): [sai, ram, krishna, prasad]
Chỉ lần xuất hiện cuối cùng của "ram" (vị trí index 4) bị xóa, lần đầu tiên (index 1) vẫn giữ nguyên.
So sánh với removeFirstOccurrence()
removeFirstOccurrence(): Xóa lần xuất hiện ĐẦU TIÊNremoveLastOccurrence(): Xóa lần xuất hiện CUỐI CÙNG- Cả hai đều trả về
truenếu phần tử được tìm thấy và xóa,falsenếu không tìm thấy