
배열을 좀 더 쉽게 쓸 수 있는 List<>에 대해 알아보자.
초기 값은 아래와 같이 받을 수 있다.
List<클래스명> 변수명 = new ArrayList<>();
ex. List<String> list = new ArrayList<>();
클래스명은 String, Integer, Long, Double 등과 같이 클래스명으로 써준다.
우리가 흔히 쓰는 int, long, char 등은 변수타입이다
첫글자가 대문자인 경우가 클래스이다. 헷갈리지 말자!
ex.
List<String> list = new ArrayList<>();
list.add("안녕하세요");
list.add("반갑습니다.");
list.get(0);
list.get(1);
list.remove(0);
list.isEmpty();
list는 null 값을 넣어주기도 하는데,
null을 넣는 순간 경우의 수가 많이 생겨서 쓰는 것을 지양한다.
만약, 사용하게 된다면 클래스로 넣으면 null값 반환, 변수타입 넣으면 오류가 난다.
또한, Integer로 쓰고, forEach문에서 int로 받으면 오류가 난다.
List<String> list = new ArrayList<String>();는 배열을 보다 쉽게 사용하기 위해서 사용된다.
그래서 주로 forEach문과 함께 사용된다.
ex.
for (MyClass str : list) {
System.out.println(str.toString());
을 넣을 수도 있고,
System.out.println(str);
을 넣을 수도 있다.
}
또한, 내가 만든 클래스를 직접 넣을 수도 있다.
이 때에는 생성자의 값을 전달하여 사용할 수 있다.
ex.
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
public static class MyClass {
int a;
public MyClass(int a) {
this.a = a;
}
// 상위 클래스에 있는 것을 수정하겠다.
@Override
public String toString() {
return "[test] : "+a;
}
}
public static void main(String[] args) {
List<MyClass> list = new ArrayList<>();
MyClass myClass = new MyClass(3);
// list.add(null);
list.add(new MyClass(1));
list.add(myClass);
for (MyClass str : list) {
System.out.println(str.toString());
}
}
}
이 때, 상위 클래스의 메서드를 수정해서 사용하고 싶다면?
@Override를 사용하면 된다.
@Override는 오버라이딩이라고 하며, 상위 클래스에 이미 존재하는 메서드만 적용할 수 있다.
추가) 메서드 = 함수
str.toString()과 위 클래스 이름이 toString()이어서 헷갈렸는데, 결국 메서드 = 함수이다.
정말 깊게 들어가면 다르지만, 이렇게 보는 것이 편하다.