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

안드로이드에서 불변 리스트(Immutable List)를 만드는 팩토리 메서드 활용법

이 튜토리얼에서는 안드로이드에서 불변 리스트(Immutable List)를 생성하는 팩토리 메서드 사용 방법을 단계별로 알아봅니다. 불변 리스트란 한 번 생성되면 내용을 추가, 수정, 삭제할 수 없는 읽기 전용 리스트를 의미하며, 데이터의 무결성을 보장해야 하는 상황에서 매우 유용합니다.

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:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:layout_marginTop="100dp"
    tools:context=".MainActivity">
    <ListView
        android:id="@+id/list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </ListView>
</LinearLayout>

위 코드에서는 불변 리스트의 항목들을 화면에 표시하기 위해 ListView 위젯을 배치했습니다.

3단계: MainActivity 작성

src/MainActivity.java 파일에 아래 코드를 추가합니다.

package com.example.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    ListView list;
    String[] mobileArray = {"Android", "IPhone", "WindowsMobile", "Blackberry",
            "WebOS", "Ubuntu", "Windows7", "Max OS X"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        list = findViewById(R.id.list);

        // 배열을 가변 리스트로 변환
        List<String> list1 = new ArrayList<>(Arrays.asList(mobileArray));

        // Collections.unmodifiableList()로 읽기 전용 리스트 생성
        List<String> readOnlylist = Collections.unmodifiableList(list1);

        String[] array = new String[readOnlylist.size()];
        ArrayAdapter adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, readOnlylist.toArray(array));
        list.setAdapter(adapter);
    }
}

핵심 코드 설명

여기서 가장 중요한 부분은 바로 Collections.unmodifiableList() 메서드입니다. 이 팩토리 메서드는 기존 리스트를 감싸는 읽기 전용 뷰(read-only view)를 반환합니다. 이렇게 생성된 리스트에 add(), remove(), set() 같은 수정 작업을 시도하면 UnsupportedOperationException이 발생합니다.

참고로, Java 9 이상에서는 더 간결하게 List.of("A", "B", "C") 팩토리 메서드를 사용해 불변 리스트를 직접 생성할 수도 있습니다.

4단계: 애플리케이션 실행

앱을 실행해 보겠습니다. 실제 안드로이드 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바에서 Run(실행) 아이콘을 클릭하세요. 실행 옵션에서 자신의 모바일 기기를 선택하면, 기기 화면에 다음과 같은 결과가 표시됩니다.

안드로이드에서 불변 리스트(Immutable List)를 만드는 팩토리 메서드 활용법

화면에 배열에 담긴 OS 이름들이 ListView 형태로 출력되며, 이 데이터는 외부에서 변경될 수 없는 불변 상태로 유지됩니다.