본문 바로가기
Java/Java 인강

Java 인강 필기 11

by code2772 2022. 10. 2.

[ 목차 ]

    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