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

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

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ÊN
  • removeLastOccurrence(): Xóa lần xuất hiện CUỐI CÙNG
  • Cả hai đều trả về true nếu phần tử được tìm thấy và xóa, false nếu không tìm thấy