Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

Android PriorityBlockingQueue에서 contains() 메서드 활용하는 방법

PriorityBlockingQueue란 무엇인가?

예제를 살펴보기 전에 먼저 PriorityBlockingQueue에 대해 알아보겠습니다. PriorityBlockingQueue는 무제한(unbounded) 큐로, 우선순위 큐(Priority Queue)와 동일한 정렬 순서를 따릅니다. 이 큐의 가장 큰 특징은 내부적으로 용량을 동적으로 확장하기 때문에 메모리 부족(OutOfMemory) 오류를 효과적으로 처리할 수 있다는 점입니다.

또한 스레드에 안전(thread-safe)하게 설계되어 있어, 멀티스레드 환경에서 여러 스레드가 동시에 요소를 추가하거나 제거할 때도 안정적으로 동작합니다.

이번 예제에서는 Android의 PriorityBlockingQueue에서 contains() 메서드를 사용하여 특정 요소의 존재 여부를 확인하는 방법을 알아보겠습니다.

구현 단계

1단계 - 새 프로젝트 생성

Android Studio에서 새 프로젝트를 생성합니다. 메뉴에서 File ⇒ New Project를 선택하고, 프로젝트 생성에 필요한 모든 세부 정보를 입력합니다.

2단계 - 레이아웃 파일 작성

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>

위 코드에서는 PriorityBlockingQueue의 요소들을 화면에 표시하기 위해 TextView 하나를 배치했습니다.

3단계 - MainActivity 작성

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.PriorityBlockingQueue;
public class MainActivity extends AppCompatActivity {
    PriorityBlockingQueue priorityBlockingQueue;
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        priorityBlockingQueue = new PriorityBlockingQueue();
        final TextView actionEvent = findViewById(R.id.actionEvent);
        priorityBlockingQueue.add("sai");
        priorityBlockingQueue.add("ram");
        priorityBlockingQueue.add("krishna");
        priorityBlockingQueue.add("prasad");
        priorityBlockingQueue.add("ram");
        actionEvent.setText("" + priorityBlockingQueue);
        actionEvent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                actionEvent.setText("" + priorityBlockingQueue.contains("prasad"));
            }
        });
    }
}

코드 설명

위 코드의 핵심 로직은 다음과 같습니다.

  • add() 메서드로 "sai", "ram", "krishna", "prasad" 등 여러 문자열 요소를 큐에 추가합니다. 참고로 "ram"은 중복으로 추가되었지만, 우선순위 큐는 기본적으로 중복 값을 허용합니다.
  • 앱이 실행되면 TextView에 큐에 저장된 전체 요소 목록이 표시됩니다.
  • TextView를 클릭하면 contains("prasad") 메서드가 호출되어, 큐에 "prasad"라는 요소가 존재하는지 확인한 후 결과(참/거짓)를 화면에 출력합니다.

실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 Android 모바일 기기가 컴퓨터와 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바에서 Run 아이콘을 클릭하세요. 실행 옵션에서 자신의 모바일 기기를 선택하면, 모바일 기기에 아래와 같은 기본 화면이 표시됩니다.

Android PriorityBlockingQueue에서 contains() 메서드 활용하는 방법

이후 화면의 TextView를 클릭하면, 아래와 같이 contains() 메서드의 결과가 표시됩니다. "prasad"가 큐에 존재하므로 true가 출력되는 것을 확인할 수 있습니다.

Android PriorityBlockingQueue에서 contains() 메서드 활용하는 방법