본문 바로가기
java

Collection(List)

by 신방동불주먹 2022. 10. 11.

<  List  >

 

- 순서가 있는 데이터의 집합

- 데이터의 중복을 허용

 

 

1. ArrayList : 배열을 이용하여 만든 리스트. 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 유용

2. Vactor : ArrayList와 동일하게 배열로 만들어진 리스트. 동기화 처리로 인하여 무거워서 잘 쓰이지 않음

3. LinkedList :데이터의 삽입, 삭제가 빈번할 경우 유용

4. Stack :  LIFO(Last-In-First-Out) 특성을 가지는 자료구조 

 

 

 

<ArrayList>

 

- Collection 프레임워크의 일부로 List 인터페이스에서 상속받아 사용된다

- java.util 패키지에 포함되어 제공

- 기본 크기는 10이지만 객체가 추가되어 용량을 초과하면 자동으로 부족한 크기만큼 용량이 늘어난다

- 기본 Object형으로 반환

- 배열의 특징으로 인해 조회가 빠르지만, 삽입/삭제가 느리다

 

 

 

 

1. ArrayList 선언

ArrayList list = new ArrayList();

 

2. ArrayList 값 추가 

 

- 기본형은 추가 불가능하다. wrapper클래스 사용하여 추가 (오토박싱 가능)

  • add(Object) : ArrayList의 마지막에 데이터를 추가
  • add(int index, Object) : ArrayList의 index에 데이터를 추가
list.add("1"); //기본형 추가 불가
list.add(new Integer(1)); //기본형을 참조형으로 바꾸는 wrapper
list.add(1);//오토박싱

 

- String 타입으로 들어가지만 Object 형변환이 발생

list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
//list.add(new String("5"); 원래 형식

 

 

3. ArrayList 값 가져오기

 

Object 형변환 된 값을 wrapper 클래스 사용하여 다시 기본형으로 캐스팅 

  • get(int index) : ArrayList의 index에 데이터 반환
System.out.println(list.get(0));
String str = (String)list.get(0); /원래 타입으로 캐스팅
System.out.println(str);
			
int sum =0;
for(Object obj : list) {
	String str1 = (String)obj;
		System.out.println(str1);
	int num = Integer.parseInt(str1); //wrapper클래스 활용 문자형을 숫자로 변환
	sum += num;
}

System.out.println("sum = " + sum);

 

4. ArrayList 값 삭제하기

  • remove(int index) : ArrayList의 index의 데이터 삭제
list.remove(1);
			
for(int i=0;i<list.size();i++) { 
	System.out.println(list.get(i));
}

 

5. ArrayList 크기 가져오기

  • size()  : 데이터가 들어있는 실제 크기를 반환. 
for(int i=0;i<list.size();i++) {
	System.out.println(list.get(i));
			}

 

 

 

 

<Stack>

- LIFO(Last-In-First-Out) : 마지막에 들어온 원소가 처음으로 나가는 특징 

- Stack 은 Vector를 implements 받는다

- push() 와 pop()은 Stack 클래스 내부에 구현되어 있어, stack으로 받아야 한다

 

 

1. Stack 선언

Stack st = new Stack();

 

2. 데이터 삽입 : push()

st.push("1");
st.push("2");
st.push("3");

 

3. 데이터 가져오기 : pop()

 

 

try {
	System.out.println((String)st.pop());
	System.out.println((String)st.pop());
	System.out.println((String)st.pop());
	System.out.println((String)st.pop()); 
	}catch(EmptyStackException e) {
		System.out.println("Stack이 비어있습니다."); 
		} 
	
while(!st.empty()) {
	System.out.println((String)st.pop());
}
  • (3-2-1) 마지막에 들어간 데이터를 먼저출력 
  • java.util.EmptyStackException : stack에 값이 없을 때 발생하는 오류

'java' 카테고리의 다른 글

Iterator (반복자 패턴)  (0) 2022.10.11
제네릭과 컬렉션  (0) 2022.10.11
래퍼 클래스(Wrapper class)  (0) 2022.10.11
Calendar 클래스  (0) 2022.10.11
String class  (0) 2022.10.07