Java의 Generic

zihooy·2023년 5월 4일
0

Java Programming

목록 보기
14/21
post-thumbnail

Java의 기본 개념 중 Generic과 이를 활용한 Linkedlist 대해 알아보자

🏹 Generic

Generic은, 데이터의 type이 컴파일 전까지 결정되지 않고, 사용자에 의해 결정되는 것을 말한다.
다음의 예시를 살펴보자.

class Tiger<T> {
	T data;
	public T getData() { return data; }
	public void setData(T data) { this.data = data;}
}

class Tiger는 <T>를 데이터 타입으로 가진다.
그 안의 멤버 변수도 마찬가지이다. 이 데이터타입은, main에서 지정이 된다.

public class hello {
	public static void main(String[] args) {
		Tiger<Integer> t1 = new Tiger<>();
		t1.setData(100);
		System.out.println(t1.getData());
		
		Tiger<String> t2 = new Tiger<>();
		t2.setData("호랑이");
		System.out.println(t2.getData());

	}
}

확인해보면 t1객체는 Integer으로, t2객체는 String으로 결정된 것을 알 수 있다. 이처럼 어떤 데이터 타입이든 사용자가 원하는대로 지정할 수 있다는 것이 generic의 특징이다.

🏹 Generic을 활용한 Linkedlist

Linked List는 Collection 프레임워크의 일부이다.
각 데이터가 각자의 주소와 포인터를 가지고 있으며, 이를 통해 서로 연결된다.

이때 Linkedlist의 데이터 타입은 generic이며 사용자의 필요에 맞게 활용할 수 있다.

Linkedlist를 통해 간단하게 CRUD를 구현해보자.

public class hello {
	public static void main(String[] args) {
		LinkedList<Integer> ll = new LinkedList<>();
		// C(reade)RUD
		// Create, add, insert, push, lastPush
		ll.add(100);
		System.out.println(ll.size());
		for (int i = 0; i < 6; i++) {
			ll.add(i*10);
		}
		System.out.println(ll.size());
		

Linkedlist를 생성하고 데이터를 추가하는 부분이다.
LinkedList<Integer> ll = new LinkedList<>();을 통해 linkedlist를 생성하고,
ll.add(100)을 통해 그 안에 데이터를 추가할 수 있다.

		//CR(ead)UD
		//1) 
		System.out.println(ll);
		//2)
		for (int i = 0; i < ll.size(); i++) {
			Integer num = ll.get(i);
			System.out.print(num + " ");
		}
		System.out.println("");
		//3) foreach, 인덱스가 필요하지 않다면 활용 
		//foreach 문에서 사용하는 변수 : data, item, value
		for (Integer data : ll) {
			System.out.print(data + " ");
		}
		System.out.println("");
		
		int[] ar = {1, 2, 3};
		for(int i : ar) {
			System.out.println(i + " ");
		}
		System.out.println("");

데이터를 읽어오는 3가지 방법이다.
Linkedlist 전체를 읽어오거나, for문, foreach문을 활용하여 각 데이터에 접근하여 읽어올 수 있다.

		//CRU(pdate)D
		ll.set(3, 777);
		System.out.println(ll);
		
		//CRUD(elete)
		//delete, remove, erase
		ll.remove(3);
		System.out.println(ll);

	}
}

데이터를 수정할 때는 .set(), 삭제할 때는 .remove()를 활용한다.

profile
thisIsZihooLog

0개의 댓글