Java/Java 인강

Java 인강 필기 11

code2772 2022. 10. 2. 11:04
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