배움과 복습
컬렉션 프레임워크
뚜비콩
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