반응형
Java Collection Framework
객체를 어떤 방식으로 묶을 것인가를 정하기 위한 인터페이스
List
- 요소를 일렬로 유지해서 순서에 의해 접근한다
- 구현 클래스 : ArrayList, Vector 등
- Vector와 ArrayList는 동일한 내부구조를 가지고 있음
- Vector와 ArrayList의 차이는 메소드의 동기화(synchronized) 유무임
- Vector는 동기화된 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 Vector() 메소드를 실행할 수 없음
- → 그렇기 때문에 멀티 스레드 환경에서는 안전하게 객체를 추가 또는 삭제할 수 있음
List list = new ArrayList();
list.add(5);
list.add(6.7);
list.add('M');
list.add("SEOUL");
System.out.println(list.size()); //요소의 갯수 4
for (int i = list.size() - 1; i >= 0; i--) {
list.remove(i);
}
System.out.println(list.size()); //요소의 갯수 0
Set
- 구현 클래스 : HashSet, TreeSet, EnumSet 등
- 순서가 없이 저장됨 (Index 없음)
- 객체를 중복해서 저장할 수 없고, 하나의 null만 허용함
- iterator() 메소드를 이용하면 저장된 객체를 한번씩 가져올 수 있음
- 순서가 없기때문에 값을 넣은 순서대로 출력되지 않음
// 객체 가져오기
// 방법1 : 향상된 for문 사용
Set<E> set = new HashSet<>();
for(E e : set) {
...
}
// 방법2 : Set컬렉션의 iterator() 메소드 사용
Set<E> set = new HashSet<>();
Iterator<E> iterator = set.iterator();
Map
- 구현 클래스 : HashMap, Hashtable, Properties 등
- 순서가 없이 저장됨(Index 없음)
- key와 value 한쌍으로 저장되어 key값으로 value를 찾을 수 있음
- key값은 중복값이 올 수 없음
- JSON, 파이썬(딕셔너리), NoSQL DB 등에서 많이 사용하는 문법
HashSet command = new HashSet();
command.add("list.do=net.bbs.List");
command.add("read.do=net.bbs.Read");
command.add("write.do=net.bbs.Write");
System.out.println(command.size());
// 1) 반복자 생성하기
Iterator iterator1 = command.iterator();
HashMap hm = new HashMap();
// 2) 값을 모두 출력
while (iterator1.hasNext()) {
String obj = (String)iterator1.next();
// 3) "="위치를 기준으로 문자열 분리하기
// split(), substring(), StringTokenizer 클래스 선택 사용
String[] str = obj.split("=");
hm.put(str[0], str[1]);
}
System.out.println(hm.get("read.do"));
thread
- 하나의 프로그램이나 하나의 메소드가 cpu 자원을 전부 점유하는 것을 막을 수 있음
- JVM이 쓰레드 관리자에 등록하고, start() 메소드가 run() 을 호출함
- Thread 클래스 : 인터페이스 Runnable의 구현 클래스
- 예) 채팅, 실시간 예매등에 많이 사용
thread 사용 방법 1
- Thread 클래스를 상속받아 사용
- 자바에서 class는 단일상속만 가능하기 때문에 한 클래스에서 상속을 받아 사용하면 다른 클래스에서 사용 불가
class MyThread1 extends Thread {
public MyThread1() {}
// start() 메소드는 run() 메소드를 호출하는 기능
@Override
public void run() {
...
}
}
MyThread1 myThread1 = new MyThread1();
thread 사용 방법 2 ⭐
- Runnable 인터페이스를 구현하여 사용
- 자바에서 interface는 여러 클래스에서 사용 가능
class MyThread2 implements Runnable {
public MyThread2() {}
// start() 메소드는 run() 메소드를 호출하는 기능
@Override
public void run() {
...
}
}
Runnable myThread2 = new MyThread2();
Thread thread = new Tread(myThread2);
// 또는 -----------------------------
Thread thread = new Tread(new MyThread2());
반응형
'Back-End > Java' 카테고리의 다른 글
Java(9) (0) | 2023.03.23 |
---|---|
Java(7) (0) | 2023.03.21 |
Java 예제(4) (0) | 2023.03.20 |
댓글