Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

우주코딩

자바 API : ArrayList에 대해 본문

자바 본 강의

자바 API : ArrayList에 대해

우주코딩 2021. 8. 23. 20:36

자바 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 키워드도 생략해야 한다. 있으면 컴파일 오류!

Comments