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

Cách lấy phần tử đầu tiên trong ConcurrentLinkedDeque Android

Giới thiệu về ConcurrentLinkedDeque

ConcurrentLinkedDeque là deque không giới hạn, an toàn cho đa luồng, dựa trên nút liên kết. Phần tử "đầu tiên" (first) là phần tử ở đầu deque (head). Yêu cầu API 21+.

Bước 1: Tạo dự án mới

Mở Android Studio, chọn File → New Project, điền thông tin cần thiết.

Bước 2: Thiết kế giao diện (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>

Bước 3: Viết 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.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);

        // Thêm phần tử mẫu
        concurrentLinkedDeque.add("sai");
        concurrentLinkedDeque.add("ram");
        concurrentLinkedDeque.add("krishna");
        concurrentLinkedDeque.add("prasad");

        actionEvent.setText(concurrentLinkedDeque.toString());

        actionEvent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Lấy phần tử đầu tiên (first/head) - KHÔNG xóa
                String first = concurrentLinkedDeque.getFirst();
                actionEvent.setText("First: " + first);
            }
        });
    }
}

Chạy ứng dụng

Kết nối thiết bị (API 21+) và chạy ứng dụng.

Cách lấy phần tử đầu tiên trong ConcurrentLinkedDeque Android

Nhấn vào TextView để lấy phần tử đầu:

Cách lấy phần tử đầu tiên trong ConcurrentLinkedDeque Android

So sánh các phương thức lấy đầu:
Phương thứcHành viKhi rỗng
getFirst()Lấy đầu, KHÔNG xóaNém NoSuchElementException
peekFirst()Lấy đầu, KHÔNG xóaTrả về null
pollFirst()Lấy VÀ xóa đầuTrả về null
removeFirst()Lấy VÀ xóa đầuNém NoSuchElementException
getFirst() tương đương element() của Queue. Nên dùng peekFirst() để an toàn hơn.