[Java] 배열과 ArrayList

🔥Log·2022년 12월 9일
0

Java

목록 보기
2/22

☕ 시작


이번 글에서는 Java의 일반배열과 ArrayList의 차이점과 특징에 대해서 알아보고, 각각을 초기화하고 사용하는 법에 대해서 정리해보겠다.


⭐ 일반 배열


1) 선언 및 초기화

일반 배열을 선언 또는 초기화 하는 방법으로는 아래의 방법들이 있다.

String[] nameArray = {"hello", "world"};
String nameArray2[] = {"hello", "world"};
String[] nameArray3 = new String[2];
String[] nameArray4 = new String[] {"hello", "world"};

2) 사용하기

일반 배열의 사용법은 특별할 게 없습니다. 특정 인덱스를 직접 가리켜서 조회하고, 값을 할당할 수 있습니다.

System.out.println(nameArray[i]); // i번째 요소 출력
nameArray[i] = "WOW"; // i번째 요소에 값 할당

⭐ ArrayList


위에서 봤다시피 일반 배열은 말그대로 '일반'적인 배열이다. 이 일반적인 배열을 좀 더 편리하고 강력하게 사용할 수 있게 Java에서 제공하는 것이 ArrayList클래스이다.

또, 일반배열은 초기화하는 시점에 배열의 크기가 고정되는 것에 비해 ArrayList는 따로 크기를 설정해줄 필요가 없다는 장점이 있다.

바로 한번 살펴보자.

1) 선언

ArrayList는 아래와 같이 선언할 수 있고, String자리에는 어떠한 클래스든 들어갈 수 있다.

ArrayList<String> nameArray = ArrayList<String>();

2) 초기화

ArrayList를 초기화하는 가장 기본적인 방법은 ArrayList의 add()메서드이다.
그냥 하나 하나 값을 직접 넣어주는 것이다. 사실 초기화라고 하기에는 조금 애매하다. ㅎㅎ

ArrayList<String> nameArray = new ArrayList<>();
nameArray.add("hello");
nameArray.add("world");

ArrayList를 초기화 하는 방법은 위의 방법말고도 다양한데, 좀 더 편리하고 효율적인 방법들을 살펴보자.

2-2) Arrays.asList()

List<String> nameList = Arrays.asList("hello", "world");
ArrayList<String> nameArrayList = new ArrayList<>(nameList);

2-3) List.of()

List<String> nameList = List.of("hello", "world");
ArrayList<String> nameArrayList = new ArrayList<>(nameList);

2-4) Double brace {{}}

ArrayList<String> list = new ArrayList<String>() {{
    add("hello");
	add("world");
}}

2-5) Stream

import java.util.stream.Collectors;
import java.util.stream.Stream;

String[] names = new String[] { "hello", "world" };
ArrayList<String> nameArray = new ArrayList<>(
	Stream.of(names).collect(Collectors.toList())
);

이 방법은 주로 특정 라이브러리의 메서드의 return값이 일반 배열일 때, 그 값을 ArrayList로 만들어주고자 할 때 자주 사용된다.


🧐 ArrayList가 뭐가 좋은디?


ArrayList는 개발자가 편하게 배열을 다룰수 있도록 다양한 메서드를 제공한다. 어떤 메서드들이 있는지 살펴보자.

add()

ArrayList에 값을 추가하는 메서드이다.

ArrayList<String> names = ArrayList<String>();

names.add("hello");

get()

특정 인덱스에 위치한 요소를 조회하는 메스드이다.

ArrayList<String> names = ArrayList<String>();
names.add("hello");

System.out.println(names.get(0));

clear()

ArrayList를 빈배열로 만들어준다.

ArrayList<String> names = ArrayList<String>();
names.add("hello"); // names == ["hello"]

names.clear(); // names == []

contains()

ArrayList에 특정 값이 있는지 판단해서 Boolean 값을 return한다.

ArrayList<String> names = ArrayList<String>();
names.add("hello"); // names == ["hello"]

names.contains("hello"); // true
names.contains("world"); // false

isEmpty()

ArrayList가 빈배열인지 판단한 해서 Boolean 값을 return한다.

ArrayList<String> names = ArrayList<String>();
names.add("hello"); // names == ["hello"]

names.isEmpty(); // false
names.clear(); // names == []
names.isEmpty(); // true

forEach()

람다식과 함께 편리하게 loop를 돌 수 있다.

ArrayList<String> names = ArrayList<String>();
names.add("hello"); // names == ["hello"]

names.forEach(name -> {
	System.out.println(name);
})

size()

ArrayList의 크기를 return하는 메서드이다.

ArrayList<String> names = ArrayList<String>();
names.add("hello"); // names == ["hello"]

names.size(); // 1

그 외

위에서 언급한 메서드들 말고도 삭제, 수정, 정렬, 자르기, 변환하는 메서드들이 더 있다.
더 자세한 메서드들은 여기여기를 참고하면 좋을 것 같다.


🙏 참고


0개의 댓글