Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีใช้ clear() ใน ConcurrentLinkedDeque บน Android

บทนำ

ConcurrentLinkedDeque เป็น Deque แบบ Unbounded, Thread-safe ตัวอย่างนี้สาธิตการใช้ clear() ลบข้อมูลทั้งหมด

ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่

เปิด Android Studio เลือก File → New Project กรอกข้อมูลที่จำเป็น

ขั้นตอนที่ 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:gravity="center"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <TextView
        android:id="@+id/actionEvent"
        android:textSize="40sp"
        android:layout_marginTop="30dp"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

</LinearLayout>

ขั้นตอนที่ 3: เขียนโค้ด Java (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.ConcurrentLinkedDeque;

public class MainActivity extends AppCompatActivity {

    ConcurrentLinkedDeque<String> concurrentLinkedDeque;

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

        concurrentLinkedDeque = new ConcurrentLinkedDeque<>();
        final TextView actionEvent = findViewById(R.id.actionEvent);

        // เพิ่มข้อมูลตัวอย่าง
        concurrentLinkedDeque.add("sai");
        concurrentLinkedDeque.add("ram");
        concurrentLinkedDeque.add("krishna");
        concurrentLinkedDeque.add("prasad");

        actionEvent.setText("" + concurrentLinkedDeque);

        // คลิกเพื่อ Clear ทั้งหมด
        actionEvent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                concurrentLinkedDeque.clear();
                actionEvent.setText("" + concurrentLinkedDeque); // แสดง []
            }
        });
    }
}

การทดสอบแอปพลิเคชัน

รันแอปบนอุปกรณ์จริง

วิธีใช้ clear() ใน ConcurrentLinkedDeque บน Android

คลิก TextView จะล้างข้อมูลทั้งหมด แสดง []

วิธีใช้ clear() ใน ConcurrentLinkedDeque บน Android

คำอธิบาย clear()

  • ลบองค์ประกอบทั้งหมดออกจาก Deque
  • หลัง clear(): size() == 0, isEmpty() == true
  • Thread-safe: Atomic operation
  • ไม่คืนค่า (void)

เมธอดลบข้อมูลอื่นๆ ใน Deque

เมธอด คำอธิบาย
removeFirst() ลบและคืนค่า Head
removeLast() ลบและคืนค่า Tail
pollFirst() ลบและคืนค่า Head (คืน null หากว่าง)
pollLast() ลบและคืนค่า Tail (คืน null หากว่าง)
remove(Object o) ลบอันแรกที่เจอที่ equals(o)
clear() ลบทั้งหมด

สรุป

ใช้ clear() ล้าง ConcurrentLinkedDeque ทั้งหมดแบบ Atomic และ Thread-safe เหมาะสำหรับ Reset สถานะในระบบ Multithread