본문 바로가기
프로그래밍/Java

[Java | 자바] Collection이란?(2) - List 인터페이스

by 불타는홍당무 2015. 2. 2.

* 본 내용은 <자바의 신>을 참고하여 작성하였습니다.



List 인터페이스


Collection을 확장한 다른 인터페이스와 LIst 인터페이스의 가장 큰 차이점은 배열처럼 "순서"가 있다는 것.

java.util 패키지에서는 ArrayList, Vector, Stack, LinkedList를 가장 많이 사용한다.


ArrayList와 Vector 클래스의 사용법은 거의 동일하고 기능도 비슷하다. 

공통점) 크기 확장이 가능하다.

차이점) ArrayList는 Thread safe하지 않고, Vector는 Thread safe하다. 

Thread safe하지 않다는 것은 객체에 여러 명이 달려들어 값을 변경하려고 하면 문제가 발생할 수 있다는 것이다.


Stack은 Vector 클래스를 확장한다. LIFO를 지원하지 위해 만들어졌다.

LIFO는 Last In First Out의 약자로 후입선출을 의미한다.



1. ArrayList


선언 및 생성


컬렉션 관련 클래스의 객체들을 선언할 때에는 제네릭을 사용하여 선언하는 것을 권장한다. 왜냐하면 한 클래스의 한 가지 종류의 객체만 저장하기 때문이다.


ArrayList<String> list=new ArrayList<String>();



(1) 데이터 추가




(2) 데이터 확인




(3) 데이터 삭제 및 변경




2. Stack


마지막에 들어온 데이터를 가장 처음에 꺼내는 LIFO기능을 구현하려고 할 때 필요한 클래스





<요약퀴즈>

1. Collection 인터페이스를 구현하는 대표적인 3개의 자료구조는?


List, Set, Queue


2. 배열과 같이 순서가 있는 목록형을 나타내는 대표 인터페이스는?

List

3. ArrayList라는 클래스의 생성자 중 매개 변수가 없는 기본 생성자를 사용하면 기본적으로 몇개의 저장 공간을 가지는가?

10

4. 만약 ArrayList 클래스의 저장 공간 개수를 처음부터 지정하려면 어떤 생성자를 사용하면 되는가?

ArrayList(int initialCapacity)

5. ArrayList 객체를 생성할 때 제네릭을 사용하는 이유는 무엇인가?

컴파일 시 타입을 잘못 지정한 부분을 걸러낼 수 있기 때문이다.


6. Collection 인터페이스를 구현한 클래스의 객체에서 사용할 수 있는 for 루프의 구조는 어떻게 되는가?

만약 String타입을 담는 list라는 ArrayList를 만들었다면
for(String data:list) {
//
}
와 같이 사용하면 된다.


7. Collection 인터페이스를 구현한 클래스의 객체 크기를 확인하느 메소드 이름은 무엇인가?

size()

8. ArrayList에서 특정 위치에 있는 데이터를 확인하는 메소드는 무엇인가?

indexOf()

9. ArrayList에서 특정 위치에 있는 데이터를 삭제하는 메소드는 무엇인가?

remove()

10. ArrayList에서 특정 위치에 있는 데이터를 수정하는 메소드는 무엇인가?

set()

11. java.util 패키지에 있는 Stack이라는 클래스는 어떤 클래스를 확장한 것인가?

List 인터페이스를 구현하고 Vector 클래스를 상속받았다.

12. Stack 클래스에서 데이터를 담는 메소드는 무엇인가?


push()

13. Stack 클래스에서 가장 위에 있는 데이터를 확인만 하는 메소드는 무엇인가?


peek()


14. Stack 클래스에서 가장 위에 있는 데이터를 삭제하고 리턴하는 메소드는 무엇인가?


pop()