대충벌레 블로그
article thumbnail
728x90
반응형

 제네릭과 컬렉션 

 

 

제네릭

  • 다양한 타입의 객체를 동일한 코드로 처리하는 기법
  • 제네릭은 컬렉션 라이브러리에 많이 사용됨.
  • 타입 매개변수(Type Parameter)를 이용하여 인스턴스 정의 시 개발자에 의해 선언됨.
public class Box<T> { // T는 타입을 의미!
	private T data;
	public void set(T data) {this.data=data;}
	public T get() { return data;}
	
}

Box<String> b = new Box<String>();

 

제네릭 타입 매개 변수의 표기

E Element(요소 : 자바 컬렉션 라이브러리에서 많이 사용됨.)
K Key
N Number
T Type
V Value
S,U,V 2번째,3번째,4번째 타입

 

제네릭 타입 매개 변수 예시

public interface Pair<K,V> {
	public K getKey();
	public V getValue();

}

class OrderedPair<K,V> implements Pair<K, V>{

	private K key;
	private V value;
	
	public OrderedPair(K key,V value) {
		// TODO Auto-generated constructor stub
		this.key=key;
		this.value=value;
	}
	@Override
	public K getKey() {
		// TODO Auto-generated method stub
		return key;
	}

	@Override
	public V getValue() {
		// TODO Auto-generated method stub
		return value;
	}
	
}

 타입매개변수가 2개인 (<K,V>) 인터페이스를 정의했다.

 K는 key의 타입이고, V는 value의 타입이다.

 

컬렉션

  • 컬렉션(Collection)은 자바에서 자료 구조를 구현한 클래스이다.
  • 자료구조로는 리스트,스택,큐,집합,해쉬 테이블 등이 있다.
  • List,Stack,Queue,Set,Hash Table

컬렉션 VS 배열

컬렉션

  • 가변 크기로 객체를 관리
  • 컬렉션 내의 객체 추가,삭제 시 자동으로 처리한다.

배열

  • 고정 크기 이상의 객체를 관리할수 없음.
  • 배열의 중간에 객체가 추가,삭제되면 응용 프로그램에서 자리를 이동하는 연산이 필요하다.

컬렉션 인터페이스 메소드

메소드 설명
int size() 원소의 개수 반환
boolean isEmpty() 공백상태일시 True 반환
boolean contains(Object obj) obj를 포함시 True 반환
boolean add(E element) 원소 추가
boolean remove(Object obj) 원소 삭제
Iterator<E> iterator() 원소 방문

ArrayList는 타입 매개변수를 가지는 제네릭 클래스로 제공한다.

ArrayList<String> a = new ArrayList<String>(10);

 

- 데이터 추가시

a.add("대충");

a.add("벌레");

- 데이터 개수 확인

int b = a.size();

b의 값은 2가된다.

- 데이터 삽입

a.add(1,"하는");

두번째 자리에 데이터를 추가하게 된다.

즉  {"대충","하는","벌레"} 가 된다.

- 데이터 접근

String blog = a.get(0);

blog변수에는 "대충"이라는 값이 들어간다.

- 데이터 삭제

a.remove(1);

두번째 자리에 있는 즉 아까전에 삽입했던자리의 데이터를 삭제한다.

- ArrayList 내용 삭제

a.clear();

a의 모든 요소를 삭제한다.

 

ArrayList 예시와 연산

import java.util.ArrayList;

public class ArrayListTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList<String> list = new ArrayList<String>(); //String 타입의 객체를 저장할 수 있는 ArrayList 객체 생성
		
		list.add("대충");
		list.add("벌레");
		list.add("블로그");
		list.add("입니다.");
		
		list.add(1,"하는"); //인덱스 번호 1에 "하는"을 삽입합니다.
		list.set(1,"하지않는"); // 인덱스 번호1의 원소를 "하지않는"으로 대체합니다.
		
		for(int i=0;i<list.size();i++) {
			System.out.println(list.get(i));
		}

	}

}
  • ArrayList는 중복 데이터도 가능합니다(Set은 불가)
  • 검색 시 왼쪽 or 오른쪽에서 처음 검색되는 데이터 인덱스 반환할수 있다.
int index=list.indexOf("대충");
int index2=list.lastIndexOf("블로그");

index의 값은 0이 들어갈 것이며

index2의 값은 3이 들어갈것이다.

 

그외

hasNext() : 아직 원소가 남아있으면 True 반환

next() : 다음 원소를 반환

remove() : 최근에 반환된 원소 삭제

 

 

 

관련글

 
 

 

공감,구독 부탁드립니다.

 

반응형
profile

대충벌레 블로그

@대충벌레

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!