제네릭(Generic)
만약에 우리가 어떤 자료구조를 만들어 배포하려고 한다. 그런데 String 타입도 지원하고싶고 Integer타입도 지원하고 싶고 많은 타입을 지원하고 싶다. 그러면 String에 대한 클래스, Integer에 대한 클래스 등 하나하나 타입에 따라 만들 것인가? 그건 너무 비효율적이다. 이러한 문제를 해결하기 위해 우리는 제네릭이라는 것을 사용한다.
제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다.
큐랑 스택은 LIST에 포함
Queue
생성
- JAVA에서 자료구조 Queue 를 생성하는 방법은 아래와같다.
import java.util.Queue;
Queue<Integer> queue=new LinkedList<>();
Queue<String> queue= new LinkedList<>();
Queue<int[]> queue= new LinkedList<>();
삽입(add)
- Queue에 원소를 추가할 때는, 큐명.add(원소) 메소드를 사용한다.
Queue<Integer> queue=new LinkedList<>();
queue.add(1);
queue.add(2);
queue.add(new int[] {0,0});
꺼내기(poll)
- Queue의 가장 앞의 원소를 꺼낼때는, 큐명.poll() 메소드를 사용한다.
Queue<Integer> queue=new LinkedList<>();
queue.add(1);
int que=queue.poll();
int[] temp = queue.poll();
<Set>
package collection;
import java.util.HashSet;
import java.util.Set;
public class SetTest {
public static void main(String[] args) {
//제네릭 안해줬기 때문에 아무 자료형이나 들어갈 수 있음
Set collections = new HashSet();
//순서 무관, 중복 불허
System.out.println(collections.add("1"));
System.out.println(collections.add("1"));
System.out.println(collections.add("2"));
System.out.println(collections.add("2"));
System.out.println(collections.add(3));
System.out.println(collections.add(3));
System.out.println(collections.add(4));
//id구분 중복이면 안넣게 구현했음( hashcode(),equals())
System.out.println(collections.add(new Customer(81801,"이지원","서울",18)));
System.out.println(collections.add(new Customer(81802,"땅지원","서울",18)));
System.out.println();
for (Object x:collections)
System.out.println(x);
System.out.println(collections);
}
}
<List>
package collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListTest {
public static void main(String[] args) {
//제네릭 안해줬기 때문에 아무 자료형이나 들어갈 수 있음
List collections = new ArrayList();
//순서대로 저장, 중복 허용
System.out.println(collections.add("1"));
System.out.println(collections.add("1"));
System.out.println(collections.add("2"));
System.out.println(collections.add("2"));
System.out.println(collections.add(3));
System.out.println(collections.add(3));
System.out.println(collections.add(4));
//id구분 중복이면 안넣게 구현했음( hashcode(),equals())
System.out.println(collections.add(new Customer(81801,"이지원","서울",18)));
System.out.println(collections.add(new Customer(81802,"땅지원","서울",18)));
System.out.println();
for (Object x:collections)
System.out.println(x);
System.out.println(collections);
//Iterator로 쓰는 반복하여 출력하는 법
//Iterator api를 사용해보기
Iterator iter = collections.iterator();
while(iter.hasNext()) {
System.out.println(iter.next()); //element return하고 index++
}
}
}
get : 값 가져오기
<Iterator>
Iterator iter = collections.iterator();
while(iter.hasNext()) {
System.out.println(iter.next()); //element return하고 index++
}
'Backend > Java' 카테고리의 다른 글
Java 직렬화 (0) | 2022.07.27 |
---|---|
Java 예외 처리 (0) | 2022.07.26 |
Java Override & Overload (0) | 2022.07.20 |
Java Grammer (version. Jiwon) (0) | 2022.07.19 |
JDK란? JRE, JVM에 대한 정리 (0) | 2022.07.16 |