Java 34

Hassing & HashFunction

잘못된 내용이 있을 수 있습니다.해싱과 해시함수 해싱이란 해시함수를 이용해서 데이터를 헤시테이블에 저장하고 검색하는 기법이다. 해시함수는 데이터가 저장되어 있는 곳을 알려주므로 다량의 데이터 중에서도 원하는 데이터를 빠르게 찾을 수 있다. 해싱을 구현한 클래스로 HashSet, HashMap, Hashtable 등이 있다. Hashtable은 컬렉션프레임웍 도입(JDK1.8)이후 HashMap으로 대체 되었다. 해싱의 자료 구조 HashMap을 이용해 아주 복잡한 이름을 가진 모델명과 제조사를 묶어서 데이터를 보관해둔다고 하자. 나는 이 복잡한 이름의 모델명을 가진 제품의 제조사를 자주 구분해야 할 필요가 있다. 중복되지 않는 모델명을 key로 두고 언제든 key를 이용해 value에 접근할 수 있게 만..

Java 2020.09.10

예외처리

예외 Exception 이미지 출처 예외 클래스 다이어그램 자바에서 에러는 크게 두 갈래로 나눌 수 있다. error exception 예외exception는 처리할 수 있지만, 에러는 손 쓸 방법이 없다. Exception은 RunTimeException과 그 외 Exception 두 갈래로 다시 나뉜다. 다이어그램을 자세히 보면 RuntimeException은 Unckecked, 그 외 Exception은 Checked라고 표시되어 있다. checked - unchecked check : 컴파일러가 예외 체크 (Exception클래스) unchecked : 컴파일러가 예외 체크 x (RuntimeException) 언체크드 예외인 RuntimeException은 선택적으로 처리할 수 있다. 그러니까 ..

Java 2020.09.10

람다Lambda

📚 자바의 정석을 정리한 내용입니다. ▪ 람다식Lambda Expression 자바는 두 번의 큰 변화가 있었다. JDK1.5의 지네릭스. JDK1.8의 람다. 람다의 등장으로 객체지향언어를 너머 함수형 언어가 가진 기능까지 갖추게 되었다. 말하자면 비로소 호모 사피엔스의 길에 접어든 것일까? 람다식이란 간단히 메서드를 하나의 식으로 표현한 것이다. 함수를 간략하면서도 명확한 식으로 편할 수 있다. 메서드를 람다식으로 표현하면 반환 값이 없어진다. 그래서 익명 함수라고 부르기도 한다. 그래서 어떻게 쓰는 거냐면. int max(int a, int b) { return a > b ? a:b; } 두 값을 입력받고 큰 값을 반환하는 max라는 메서드가 있다. 이것을 람다로 변환하면 이렇게 쓸 수 있다. (i..

Java 2020.09.09

와일드카드

참고 : 자바의 정석 와일드 카드 기호 '?' 표현하는데, 와일드카드는 어떤 타입도 될 수 있다. 아래 코드를 보자. package com.javaex.generics; import java.util.ArrayList; import java.util.List; public class FruitsBoxEx3 { public static void main(String[] args) { FruitBox fruitBox = new FruitBox(); FruitBox appleBox = new FruitBox(); fruitBox.add(new Apple()); fruitBox.add(new Grape()); appleBox.add(new Apple()); System.out.println(Juicer.make..

Java 2020.09.09

제네릭 클래스Generics Class

자바의 정석을 참고했습니다. Generics 컬렉션 클래스 컴파일 시 타입 체크를 해주는 기능. 장점 타입 안정성을 높여서, 의도하지 않은 타입의 객체가 저장되는 것을 막는다. 지네릭 클래스 class Box { T item; void setItem(T item) { this.item = item; } T getItem() { return item } } Box에서 T를 타입 변수라고 한다. 타입변수는 꼭 T가 아니라도 상황에 맞는 다른 알파벳을 지정할 수 있다. 위에서 정의한 제네릭 클래스 Box의 객체를 생성한다고 했을 때, 가 무슨 타입인지 지정해야 한다. Box box = new Box(); new Box void add(Fruit item) fruitBox.add(new Fruit()); fru..

Java 2020.09.09

TreeMap

이미지 출처 : https://adrianmejia.com/data-structures-for-beginners-trees-binary-search-tree-tutorial/ 트리구조. TreeMap 이미지 출처 : https://www.java8net.com/2020/02/treemap-in-java.html TreeMap은 이름에서 알다시피 이진검색트리 형태에 key와 value 쌍으로 이루어진 데이터를 저장한다. 검색과 정렬에 적합한 컬렉션 클래스다. 범위 검색은 TreeMap이 성능이 좋지만, 그게 아니라면 검색 부분에서는 HashMap 성능이 더 좋다. TreeMap의 메서드 method 설명 TreeMap(Comparator c) 지정한 Comparator를 기준으로 정렬하는 객체 생성 Tre..

Java 2020.09.09

HashMap

HashMap 출처 : https://medium.com/tanay-toshniwal/count-distinct-elements-in-input-sequence-using-java-hashmaps-373a58697dd2 HashMap은 Hashtable의 페이스리프트 버전이다. Map을 구현한 클래스의 특징은 아래와 같다. key, value를 묶어서 하나의 데이터entry로 저장한다. key는 유일unique해야 한다. value는 중복 가능 해싱hassing을 사용하므로 많은 양의 데이터를 검색할 때 뛰어난 성능을 보인다. public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { transient Entry[]..

Java 2020.09.09

TreeSet

TreeSet TreeSet은 이진 검색 트리binary search tree라는 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스다. 이진 검색 트리는 정렬, 검색, 범위 검색Range Search에 높은 성능을 보인다. TreeSet은 이진 검색 트리의 성능을 향상시킨 레드-블랙 트리Red-Black tree로 구현 되었다. Tree는 여러 개의 node가 서로 연결된 구조다. 가장 상위에 있는 노드를 root라고 한다. 위 아래로 연결된 두 노드를 부모-자식 관계라고 한다. 각 노드에 최대 2개의 노드를 연결할 수 있다. 출처 : 자바의 정석 기초편 요약집 위 표는 TreeSet에 7,4,9,1,5를 순서대로 저장한다고 했을 때 진행과정이다. 맨 처음 저장되는 데이터 7이 루트root가 된다. 그 ..

Java 2020.09.09