티스토리 뷰

배움과 복습

컬렉션 프레임워크

뚜비콩 2017. 9. 11. 11:46

1. 리스트(List) 컬렉션

1) ArrayList

List<E> list = new ArrayList<E>();
==> <E>는 type parameter.

List<String> list = new ArrayList<String>(30);
==>String 타입 객체 30개를 저장할 수 있는 용량을 가짐

      • 순서가 있음
      • 중복이 가능함
      • 배열과 매우 유사함

package chapter15;

import java.util.ArrayList;
import java.util.List;

public class ArrayListEx {
	
	public void ex1() {
		List<String> list = new ArrayList<String>();
		
		list.add("Java");
		list.add("JDBC");
		list.add("servlet/JSP");
		list.add(2, "Database");
		list.add("Spring");
		list.add("iBATIS");
		
		int size = list.size();
		
		System.out.println("총 객체 수 : "+ size);
		System.out.println();
		
		String skill = list.get(2);
		System.out.println("2: "+skill);
		System.out.println();
		
		for (int i = 0;i<list.size(); i++) {
			String str = list.get(i);
			System.out.println(i+": "+str);
		}
		System.out.println();
		
		list.remove(2);
		list.remove(2);
		list.remove("iBATIS");
		
		for (int i = 0;i<list.size(); i++) {
			String str = list.get(i);
			System.out.println(i+": "+str);
		}
		System.out.println();
	
		
		//삭제 로직은 보통 거꾸로 포문 돌림
		for (int r = list.size()-1; r>=0; r--)  {
			if (list.get(r).equals("Java"))
			list.remove(r);
		}
		
		for (int i = 0;i<list.size(); i++) {
			String str = list.get(i);
			System.out.println(i+": "+str);
		}
		System.out.println();
}
	
	public ArrayListEx() {
		ex1();
	}
	
	public static void main(String[] args) {
		new ArrayListEx();
	}
}


2) Vector


package chapter15;

import java.util.List;
import java.util.Vector;

public class VectorEx {
	List<Board> list = new Vector<Board>();

	public void ex1() {
		
		list.add(new Board("제목1", "내용1", "작성자1"));
		list.add(new Board("제목2", "내용2", "작성자2"));
		list.add(new Board("제목3", "내용3", "작성자3"));
		list.add(new Board("제목4", "내용4", "작성자4"));
		list.add(new Board("제목5", "내용5", "작성자5"));
		prn();
		
		//set활용
		list.set(3, new Board("제목0", "내용0", "작성자0"));
		list.set(0, list.get(2));
		prn();
		
		//remove 어떻게 삭제되는지 이해
		list.remove(2);
		list.remove(2);
		this.prn();
	}
	public VectorEx(){
		ex1();
	}
	
	//출력
	public void prn() {
		for (int i = 0; i<list.size(); i++) {
			Board b = list.get(i);
			System.out.println(b.subject+", "+b.content+", "+b.writer);
		}
		System.out.println();
	}
	
	public static void main(String[] args) {
		new VectorEx();

	}

}

package chapter15;

public class Board {
	
	String subject;
	String content;
	String writer;
	
	public Board(String subject, String content, String writer) {
		this.subject = subject;
		this.content = content;
		this.writer = writer;
	}

}



3) LinkedList


package chapter15;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class LinkedListEx {
	
	public void ex1(){
		List<String> l1 = new ArrayList<String>();
		List<String> l2 = new LinkedList<String>();

		long sTime; //시작 시간
		long eTime; //end time
		
		sTime = System.nanoTime();
		for (int i = 0; i<10000; i++) {
			l1.add(0, String.valueOf(i));
		}
		
		eTime = System.nanoTime();
		System.out.println("ArrayList 걸린 시간: 	"+(eTime - sTime)+"ns");
		
		sTime = System.nanoTime();
		for (int i = 0; i<10000; i++) {
			l2.add(0, String.valueOf(i));
		}
		
		eTime = System.nanoTime();
		System.out.println("LinkedList 걸린 시간: 	"+(eTime - sTime)+"ns");

	}
	
	public LinkedListEx(){
		ex1();
	}

	public static void main(String[] args) {
		new LinkedListEx();
	}

}





2. 셋(Set) 컬렉션

-Iterator<E> iterator()
저장된 객체를 한 번씩 가져오는 반복자 리턴

  • 순서가 없음
  • 중복이 불가함
  • Iterator 사용


1) HashSet

package chapter15;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class HashSetEx1 {
	
	public void ex1() {
		Set<String> set = new HashSet<String>();
		
		set.add("Java");
		set.add("JDBC");
		set.add("Servlet/JSP");
		set.add("Java");
		set.add("iBATIS");
		
		int size = set.size();
		System.out.println("총 객체 수: "+size);
		
		Iterator<String> itr = set.iterator(); 		//반복자 얻기 
		while(itr.hasNext()) {
			String element = itr.next();
			System.out.println("\t"+element);
		}
		
		set.remove("JDBC");
		set.remove("iBATIS");
		
		System.out.println("총 객체 수: "+set.size());
		
		itr = set.iterator();
		while(itr.hasNext()) {
			String element = itr.next();
			System.out.println("\t"+element);
		} 

		set.clear();
		if (set.isEmpty()){ System.out.println("비어 있음"); }
		
	}
	
	public HashSetEx1() {
		ex1();
	}

	public static void main(String[] args) {
		new HashSetEx1();
	}

}

public class Member {
	String 	name;
	int 		age;

	public Member(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	@Override
	public boolean equals(Object o) {
		boolean b = false;
		if (o instanceof Member) {
			Member m = (Member)o;
			if(m.name.equals(name) && m.age==age);
			b = true;			
		} else {
			b = false;
		}
		return b;
	}
	
	@Override
	public int hashCode() {
		return name.hashCode() + age; //String타입만
	}
}

import java.util.HashSet;
import java.util.Set;

public class HashSetEx2 {
	
	public void ex1() {
		Set<Member> set = new HashSet<Member>();
		
		set.add(new Member("강동원", 30));
		set.add(new Member("강동원", 30));

		System.out.println("총 객체 수: "+set.size());
	}
	
	public HashSetEx2() {
		ex1();
	}

	public static void main(String[] args) {
		new HashSetEx2();
	}

}



2) Map

      • <Key, Value>
      • Key: 중복 불가
      • V: 중복 가능
      • Iterator, Map Entry

3) HashMap


'배움과 복습' 카테고리의 다른 글

클래스명 뒤에 Dao, Vo, Dto 등을 붙이는 이유  (0) 2017.09.12
p.743 - 37행  (0) 2017.09.11
제너릭(Generic)  (0) 2017.09.11
멀티 스레드(multi-Thread)  (0) 2017.09.08
중첩 클래스  (0) 2017.09.04
댓글