국비 17일차_1

강지수·2024년 1월 8일
0

국비교육

목록 보기
32/97

지난 시간 복습

generic 과 synchronize 정도는 기억을 해야 하고,
chatting system 은 thread 가 어떤 식으로 작동되는지 보여주는 예,
그 흐름을 잘 따라가며 알아두어야 한다.


ArrayList

Array : 사이즈가 고정되어 있다.
ArrayList : 사이즈가 고정되어 있지 않다.

package com.tech.gt001;

import java.util.ArrayList;

public class ArrayListTest {
	public static void main(String[] args) {
		ArrayList<String> list=new ArrayList<String>();
		list.add("Milk");
		list.add("Milk");
		list.add("Butter");
		list.add("Apple");
		list.add("Grape");
		list.add("Bread");
		
		for (String val : list) {
			System.out.println(val);
		}
	}
}

결과

Milk
Milk
Butter
Apple
Grape
Bread

ArrayList 역시 indexNumber 가 존재함.
indexNumber 가 2인 Butter 가 삭제됨.


Butter 가 삭제된 순간 indexNumber 가 3 이었던 Apple 이 indexNum 2 가 되면서 뒷 Num들이 차례로 채워준다.

이는 index 로 삭제하는 방법이다.


value로 삭제하는 방법.


value 를 바로 추가하면 맨 뒤로 index가 추가되며, 위치를 지정해서 추가해줄 수 도 있다.


Array 는 길이가 length 이지만
ArrayList 는 길이가 size 이다.


특정 value 의 index 값을 알 수 있다.
Milk 는 '0' 번째 index


마지막에 있는 Milk 의 index 는 2


컬렉션 프레임워크

List : 순서를 유지하고 저장, 중복 저장 가능

  • ArrayList
  • Vector
  • LinkedList

Set : 수학에서의 집합 같은 개념, 순서를 유지하지 않고 저장, 중복 저장 불가능

  • HashSet
  • TreeSet

Map : 키와 값 (value) 으로 구성된 엔트리 저장, 키는 중복 저장 불가능

  • HashMap
  • Hashtable
  • TreeMap
  • Properties

ArrayList 컬렉션에 객체를 추가하면 인덱스 0번부터 차례대로 저장된다. 특정 인덱스의 객체를 제거하면 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨진다. 마찬가지로 특정 인덱스에 객체를 삽입하면 해당 인덱스부터 마지막 인덱스까지 모두 1씩 밀려난다.
따라서 빈번한 객체 삭제와 삽입이 일어나는 곳에서는 ArrayList를 사용하는 것은 바람직하지 않다. 그 경우 LinkedList를 사용하는 것이 좋다.


LinkedList 는 ArrayList 와 사용방법은 동일하지만 내부 구조는 완전히 다르다. LinkedList 는 인접 객체를 체인처럼 연결해서 관리한다.
LinkedList는 특정 위치에서 객체를 삽입하거나 삭제하면 바로 앞뒤 링크만 변경하면 되므로 빈번한 객체 삭제와 삽입이 일어나는 곳에서는 ArrayList 보다 좋은 성능을 발휘한다.

물론 소규모의 data 는 큰 차이가 없지만 대규모의 data 처리를 할 때나 performance 를 보여주어야 할 때는 차이를 보인다.


LinkedList

0,1,2,3,4 번 에 홍 1,2,3,4,5 번이 차례로 저장됨.


index 추가, 삭제 하는 방법은 ArrayList 와 같다.


SetTest

동일한 value 인 'Milk' 가 한번만 저장되어 있는 모습.


s1 과 s2 의 합집합 : addAll
s1 과 s2 의 교집합 : retainAll
s1 과 s2 의 차집합 : removeAll


add method 는 객체를 추가할 수 있는지 없는지 boolean 값을 반환함.

if 문 안에서 'a' 값을 추가할 수 없다면 '중복 : a' 을 출력하게 함.
'단어' 라는 값이 중복되므로 단어 가 출력됨.


Iterator

Iterator : 반복자

iterator 화 하는 이유는 그 안의 method를 더 편하게 사용하기 위함이다.
단순히 배열의 값을 하나씩 불러와서 출력하거나 하는 방법과 내용과 흐름이 동일하지만, 그 값을 재가공해서 사용하는 데에는 iterator 화 해서 쓰는 게 더 편리하다.

ex) iterator 화 하면 'hasNext' 와 같은 method 를 사용할 수 있고, 같은 결과를 내더라도 더 코드가 간결해지고, 짜기 편해진다.

또한 set 과 map 컬렉션은 순서를 제공하지 않기 때문에 iterator 를 통해 객체를 한번씩 반복해서 가져오게 됨으로써 list 컬렉션 처럼 값을 불러올 수 있게 만들 수 있다.


Vector


자료구조

queue / stack

Stack

입력과 출력의 구멍이 1개

입력 : push, 출력 : pop

LIFO : Last In Fist Out, 후입선출


Stack 은 후입선출이기 때문에 뒤에서부터 빠져나온다.


Queue

입력과 출력의 구멍이 2개

입력 : Offer/enQueue, 출력 : Poll/dnQueue

FIFO : First In First Out, 선입선출


Queue 는 선입선출이기 때문에 앞에서부터 빠져나온다.


Map

Map 은 Key 와 Value 로 구성되어 있다.

앞의 값은 key, 뒤의 값은 value 이다.

key 값으로 value 를 불러올 수 있다.


JDBC

Java DataBace Connectivity

elcipse 에서 orcle db 에 접속하게 해주는 드라이버


Oracle 사이트에서도 download 가능


Java Project 우클릭 - Properties


Java Build Path - Libraries - Modulepath - Add External Jars


jdbc 위치 - ojdbc6.jar 열기


Apply and Close


Java Project 안에 Referenced Libraries 안에 ojdbc6.jar 가 새로 생긴 모습


module-info.java 에 명령을 몇개 넣어준다.


드라이버 적재 성공, db 연결 성공한 모습


Oracle DB 에서 table 생성


elcipse 를 통해 db 를 불러온 모습

profile
개발자 준비의 준비준비중..

0개의 댓글