본문 바로가기

Programming language

(38)
[JAVA] HashMap HashMap과 Hashtable Map 인터페이스를 구현, 데이터를 키와 값의 쌍으로 저장 HashMap(동기화 x) 은 Hashtable(동기화 o)의 신버전 HashMap Map 인터페이스를 구현한 대표적인 컬렉션 클래스 순서를 유지하려면, LinkedHashMap 클래스를 사용하면 된다. TreeMap 범위 검새과 정렬에 유리한 컬렉션 클래스 HashMap 보다 데이터 추가, 삭제에 시간이 더 걸림 HashMap의 키(key)와 값(value) 해싱(hashing) 기법으로 데이터를 저장. 데이터가 많아도 검색이 빠르다. Map 인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장. 키(key) - 컬렉션 내의 키(key) 중에서 유일해야 한다. 값(value) - 키(key)와 달리 데이터의 중복..
[JAVA] TreeSet TreeSet 1. 이진 탐색 트리(binary search tree)로 구현. 범위 탐색과 정렬에 유리. 2. 이진트리(binary tree)는 모든 노드가 최대 2개의 하위 노드를 가짐 3. 각 요소(node)가 나무(tree) 형태로 연결(LinkedList의 변형) 이진 탐색 트리(binary search tree) 1. 부모보다 작은 값은 왼쪽, 큰 값은 오른쪽에 저장하는 이진트리 2. 단점 : 데이터가 많아질수록 추가, 삭제에 시간이 더 걸림(비교 횟수 증가) 데이터 저장과정 boolean add(Object obj) 1. HashSet 은 equals(), hashCode()로 비교 2. TreeSet 은 compare()를 호출해서 비교 3. 루트부터 트리를 따라 내려가며 값을 비교, 작으..
[JAVA] Iterator Iterator 1. 컬렉션에 저장된 데이터를 접근하는 데 사용되는 인터페이스 2. 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것 3. 컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용 Map과 Iterator 1. Map에는 iterator()가 없다.(List, Set은 Collection의 자손이다.) 2. keySet(), entrySet(), values()를 호출해야 한다. package org.example.ch11; import java.util.*; public class Ch11_22_23_24 { public static void main(String[] args) { // ArrayList list = new ArrayList(); // Co..
[JavaScript] ES6 Classes ES6에서 나온 Class를 이용해서 더 쉽게 OOP을 구현할 수 있습니다. 이것은 문법을 OOP 방식을 이용하지만 내부에서 prototype을 사용하며 작동됩니다. class Person { constructor(name, email, birthday){ this.name = name; this.email = email; this.birthday = new Date(birthday); } introduce() { return `hello my name is ${this.name}`; } } const john = new Person('john', 'john@example.com', '7-10-91'); console.log(john); 클래스 안에 함수를 만들면 그 함수가 바로 prototype에 들어..
[JavaScript] prototype let user = { name : 'John', age : 45, //email : 'john@example.com' } console.log(user.name); console.log(user.hasOwnProperty('email')); hasOwnProperty는 어디서 왔을까? 현재 user 객체 변수에는 두 개의 속성(name, age)만 있는데 hasOwnProperty는 어디서 왔을까? -> 모든 객체는 golbal Object prototype을 가진다 prototype은 무엇인가? 프로토타입은 자바스크립트 객체가 다른 객체로부터 메서드와 속성을 상속받는 메커니즘을 말합니다. 이것을 프로토타입 체인(prototype chain)이라고도 말합니다. 위에서 보듯이 prototype objec..
[JavaScript] this 1. 메서드에서 this 사용 -> 해당 객체를 가리킨다. 객체 안에 함수가 있으면 그것이 메서드이다. 2. 함수에서 this 사용 -> window 객체를 가리킨다. 3. constructor 함수에서 this 사용 -> 빈 객체를 가리킨다. + 화살표 함수에서 this는 항상 상위 스코프의 this를 가리킨다.
[JavaScript] Event Bubbling, Event Capturing, Event Delegation 이벤트의 3단계 흐름(flow) 이벤트 캡처링을 더 자세히 보기 위해서 이벤트의 3단계 흐름을 살펴보겠습니다. 1. 캡쳐링 단계 - 이벤트가 하위 요소로 전파되는 단계 2. 타깃 단계 - 이벤트가 실제 타깃 요소에 전달되는 단계 3. 버블링 단계 - 이벤트가 상위 요소로 전파되는 단계 Event Bubbling 이벤트 버블링이란 가장 깊게 중첩된 요소 (3)에 이벤트가 발생했을 때 이벤트가 위로(bubble up) 전달되는 것을 의미합니다. 그래서 3번 요소, 2번 요소, 1번 요소에 그 이벤트에 대한 핸들러가 있다면 3번 요소에 핸들러가 실행되고 2번 요소에 핸들러 1번 요소에 핸들러 순으로 실행됩니다. event.target vs event.currentTarget 1. event.target - 실..
[JavaScript] Event Listener, Event 객체 Event Listener 마우스를 이용해서 버튼을 클릭할 대는 클릭 "이벤트"가 발생합니다. 이렇게 이벤트가 발생했을 때 어떠한 액션을 위한 함수를 호출하는데 그 함수가 바로 이벤트 리스너입니다. addEventListener() 위에서 말한 것처럼 어떠한 이벤트가 발생했을 때 이벤트 리스너를 호출하기 위해서는 이벤트 리스터를 해당 객체나 요소에 등록해줘야 합니다. -> 주로 addEventListener 메서드 이용 element.addEventListener(이벤트명, 실행할 함수명(listener), 옵션); Event 객체 이벤트가 발생할 때 이벤트 객체를 가져올 수 있습니다. Event 종류 1) UI 이벤트 2) 키보드 이벤트 3) 마우스 이벤트 4) 포커스 이벤트 5) 폼 이벤트