728x90
반응형
(22.8.5)
# 37강 컬렉션 프레임웍2
- set(집합) - 요소들의 집합적으로 모아놓은 자료구조
// 중복을 허용하지 않음, 저장 순서를 유지하지 않음
- set을 구현하는 클래스 : HashSet, TreeSet
- HashSet - set과 동일하게 중복이 없고, 순서가 없다.
- TreeSet - Set과 동일하게 중복이 없으나, 정렬이기능이 추가된 형태
package day37;
import java.util.HashSet;
import java.util.Iterator;
import java.util.TreeSet;
public class Day37_1 {
public static void main(String[] args) {
HashSet hs = new HashSet();
hs.add("demon");
hs.add("banana");
hs.add("tomato");
hs.add("apple");
hs.add("cargo");
TreeSet ts = new TreeSet();
ts.add("demon");
ts.add("banana");
ts.add("tomato");
ts.add("apple");
ts.add("cargo");
Iterator it = hs.iterator();
System.out.println("<Hash Set 출력>");
while(
it.hasNext()) {
System.out.print(" "+it.next());
}
System.out.println();
Iterator it2 =ts.iterator();
System.out.println("<Tree Set 출력>");
while(it2.hasNext()) {
System.out.print(" "+it2.next());
}
System.out.println();
System.out.println("현재 TreeSet크기"+ts.size());
}
}
- List - 데이터를 일렬로 늘어놓은 구조, 순서있으며 중복 허영
- ArrayList - 요소 추가 시 0번 인덱스부터 차례대로 요소 저장
- LinkedList - 요소들이 서로 연결되어있는 리스트 각 요소가 다음 요소의 주소를 저장
package day37;
import java.util.ArrayList;
public class Day37_2 {
public static void main(String[] args) {
ArrayList list1 = new ArrayList(10);
list1.add("A");
list1.add("C");
list1.add("E");
list1.add("D");
System.out.println("초기상태");
System.out.println(list1);
System.out.println("인덱스 1위치에 B추가");
list1.add(1,"B");
System.out.println(list1);
System.out.println("인데스 2위치의 값 삭제");
list1.remove(2);
System.out.println(list1);
System.out.println("2자리 값 봔환 :"+list1.get(2));
}
}
package day37;
import java.util.ArrayList;
import java.util.LinkedList;
public class Day37_3 {
public static void main(String[] args) {
ArrayList al = new ArrayList();
LinkedList ll = new LinkedList();
long start = System.currentTimeMillis();
for(int i =0;i<100000;i++) {
al.add(0,String.valueOf(i));
}
long end = System.currentTimeMillis();
System.out.println("ArrayList 작업시간 :"+(end- start));
start = System.currentTimeMillis();
for(int i =0;i<100000;i++) {
ll.add(0,String.valueOf(i));
}
end = System.currentTimeMillis();
System.out.println("LinkedList 작업시간 :"+(end- start));
}
}
# 38강 컬렉션 프레임웍3
- Queue - 한 쪽 끝에서 삽입이 다른 쪽 끝에서 삭제가 일어나는 구조
// 선입선출의 구조 앞에서 머리에서 삭제, 꼬리에서 삽입
구조) Queue<Element> q = new LinkedList<Element>();
- stack - 한 쪽 끝에서 삽입과 삭제가 모두 일어나는 구조
// 후입선출(LIFO) 의 구조, top에서 삽입/삭제 일어남, Vector의 자식 클래스
package day38;
import java.util.LinkedList;
import java.util.Queue;
public class Day38_1 {
public static void main(String[] args) {
Queue<String> q = new LinkedList<>();
//1.add : rear 위치에 e 삽입
q.add("apple");
q.add("banana");
q.add("cherry");
q.add("tomato");
System.out.println(q);
//2.element : front에 위치한 데이터 반환
System.out.println("element:"+q.element());
//3.remove : 프론트에 위치한 데이터를 반환 후 삭제
System.out.println("remove :"+q.remove());
System.out.println(q);
//4.offer(e) : rear위치에 데이터 삽입
q.offer("peach");
System.out.println(q);
//5.peek(): front 위치에 있는 데이터의 값만 반환
System.out.println("peek:"+q.peek());
System.out.println(q);
//6.poll() : front 위치한 데이터를 삭제
System.out.println("poll:"+q.poll());
System.out.println(q);
}
}
package day38;
import java.util.Stack;
public class Day38_2 {
public static void main(String[] args) {
Stack<String> s = new Stack<>();
//1.push() : 데이터 삽입
s.push("apple");
s.push("banana");
s.push("cherry");
System.out.println(s);
//2.pop() : top의 데이터 삭제
System.out.println("pop:"+s.pop());
System.out.println(s);
//3.peek() : top의 데이터 보기
System.out.println("peek:"+s.peek());
//4.search() - 0부터 시작하지 않는다.
System.out.println(s.search("apple"));
}
}
# 39강 컬렉션 프레임웍4
- Map - 키를 통해서 값을 참조할 수 있는 구조, 인터페이스이기 때문에 사용하려면 업 캐스팅이 필요하다. Map을 구현한 대표 클래스 HashMap, Tree Map이 있다,
-HashMap - 키와 벨류값으로 데이터를 저장하는 형태, 인터페이스의 한 종류, 모든 속성을 갖고 있으며 저장 방식 동일하다, 해싱이라는 검색 알고리즘 사용하고 키의 중복은 허용하지 않으나 벨류의 중복은 허용한다.
- 메모리낭비를 최소화 하기 위해, 저장할 값 입력 받을 시 연산을 통해 새로운 주소 값을 생성하여 메모리에 저장하는 기법이다.
- 해싱 - 키 값을 해시 값으로 변경, 변경된 해시 값으로 저장할 공간인 해시 테이블
- 알고리즘 (문제를 해결하기 위한 절차적 해결 과정)
- 검색 알고리즘 (자료구조 내의 데이터 중 원하는 데이터를 찾는 과정),
배열에 저장된 데이터를 가장 빨리 찾는 방법 - (저장된 데이터가 몇 번째 위치하는지를 알아오는 것)
package day38;
import java.util.HashMap;
import java.util.Scanner;
public class Day39_hash {
public static void main(String[] args) {
HashMap<String,String > hm = new HashMap<>();
Scanner sc = new Scanner(System.in);
//1. put(key, value)
hm.put("apple","사과");
hm.put("paper","종이");
hm.put("flower","꽃");
String voca;
System.out.println("알고싶은 단어를 입력하세여:");
voca=sc.nextLine();
//2. containsKey(Key) : key가 hashmap에 존자해면 트루
if(hm.containsKey(voca)) {
//3.get(key) : value 값 변환
System.out.println("해당하는 뜻은 :"+hm.get(voca));
}
else {
System.out.println("해당 단어에 뜻은 데이터베이스에 없습니다.");
}
}
}
반응형
'Java > Java 인강' 카테고리의 다른 글
Java 인강 필기 13 (1) | 2022.10.02 |
---|---|
Java 인강 필기 12 (1) | 2022.10.02 |
Java 인강 필기 10 (1) | 2022.10.02 |
Java 인강 필기9 (0) | 2022.10.02 |
Java 인강 필기 8 (0) | 2022.10.02 |