우주코딩
자바 API : ArrayList에 대해 본문
자바 API
ArrayList
배열을 이용하여 객체 목록을 다룬다.
Collect API
List Set Map
중복허용 O X key : 중복불가, value : 중복가능
null 허용 O O HashMap : X Hashtable : O
contains() 와 equals()의 관계
contains()
- 해당 인스턴스와 같은 객체가 있는지 알아낸다.
- 단 인스턴스 주소를 비교하는 것이 아니라 equals()의 결과가 true 인지 비교한다.
- hashCode()의 리턴 값이 같을 필요는 없다.
indexOf() 사용법
indexOf(값)
- 목록에 같은 값을 가진 객체의 인덱스를 알아낸다.
- 값을 비교할 때는 contains()와 마찬가지로 equals()의 리턴 값이 true인 경우 같은 값으로 간주한다.
contains() , indexOf() 모두 equals()를 오버라이딩해야 비교할 수 있다.
Object 클래스 안의 equals는 인스턴스가 같은지를 비교하는 것이기 때문에 값의 비교를 하려면 오버라이딩 해야한다.
ArrayList에서 값을 꺼내기
forEach()
내부적으로 반복문을 돌리면서 Consumer 규칙에 따라 각 항목에 대해 accept() 메서드를 호출한다.
forEach() 메서드에 넘길 객체는 Consumer 규칙에 따라 만들어야한다.
List에 보관된 객체를 반복문을 통해 꺼낼 때마다 Consumer 규칙에 따라 accept()를 호출할 것이다.
메서드 한 개 짜리 인터페이스에서만 적용하는 lambda문법
lambda문법
다음과 같이 추상 메서드가 한 개 있는 인터페이스를 "functional interface"라고 부른다.
=> 이런 경우에 람다 문법을 사용할 수 있다.
=> 인터페이스는 static 을 붙이지 않아도 static 멤버가 사용할 수 있다.
익명클래스로 인터페이스 구현하기
Player p1 = new Player() {
@Override
public void play() {
System.out.println("익명 클래스");
}
};
p1.play();
람다 문법으로 인터페이스 구현하기
// => 메서드 한 개짜리 인터페이스를 좀 더 간결하게 구현하기 위해 만든 문법이다.
// => 뻔한 코드 생략!
Player p2 = () -> {
System.out.println("람다");
};
p2.play();
리턴 값은 return 명령을 사용하여 처리한다.
한 문장으로 된 표현식(=값을 리턴하는 한 문장의 코드)인 경우 괄호 생략할 수 있다.
문장은 문장인데 값을 리턴하는 문장을 '표현식(expression)' 이라 부른다. => 단 괄호를 생략할 때 return 키워드도 생략해야 한다. 있으면 컴파일 오류!
'자바 본 강의' 카테고리의 다른 글
인터페이스 정리, Stack 클래스, Stack과 Deque (0) | 2021.08.26 |
---|---|
람다 문법 (0) | 2021.08.25 |
제네릭, 제네릭 레퍼런스, 제네릭 파라미터 (0) | 2021.08.23 |
익명 클래스, 익명 클래스의 생성자 호출 (0) | 2021.08.17 |
inner 클래스 사용, 클래스 import, 로컬 클래스, 로컬 클래스와 로컬 변수 (0) | 2021.08.17 |