*제네릭 : 일반적인 하나의 코드로 다양한 자료형을 처리하는 기법
일반적인 코드를 작성하고 이코드를 다양한 타입의 객체에 대하여 재사용 하는 프로그래밍 기법.
ex)
//class Store<T>
//{
// private T data;
// public void setData(T data)
// {this.data = data;}
// public T getData()
// {return data;}
public class Test {
public static void main(String[] args) {
// FIXME Auto-generated method stub
// Store<String> store = new Store<String>();
// store.setData("Hello");
// System.out.println(store.getData());
// Store<Integer> intstore = new Store<Integer>();
// intstore.setData(10);
// System.out.println(intstore.getData());
*컬렉션
자료구조로는 리스트 - 순서가 있는 데이터들의 집합.
ArrayList - 각데이터에 인덱스를 가지고 있기때문에 접근이 쉬움.
LinkedList - 삽입 / 삭제에 용이하다.
스택(stack), 큐(queue) - 리스트인데 삽입삭제에 규칙이 있는놈들.
스택: LIFO 큐 : FIFO
집합(set) - 순서가 없는 데이터 집합(중복X).
ArrayList<String> list = new ArrayList<String>();
list.add("Milk");
list.add("Bread");
list.add("BUTTER");
list.add(1, "APPLE"); //인덱스 1에 APPLE삽입.
list.add(2, "GRAPE"); //인덱스 2에 원소를 GRAPE로 대체.
list.remove(3); //인덱스 3의 원소를 삭제 한다.
*set
ex)Set<String> s1 = new HashSet<String>();
Set<String> s2 = new HashSet<String>();
s1.add("A");
s1.add("B");
s1.add("C");
s2.add("A");
s2.add("D");
Set<String> union = new HashSet<String>(s1);
union.addAll(s2);
Set<String> intersection = new HashSet<String>(s1);
intersection.retainAll(s2);
System.out.println("합집합 : " + union);
System.out.println("교집합 : " + intersection);
출력값 : 합집합 : [A, B, C, D]
교집합 : [A]