기록의 공유

잊지않기 위한 기록의 공유

Backend/Java 38

[Java] 이분탐색 ,이진탐색

굉장히 효율적인 알고리즘으로, 이 알고리즘을 수행하기 위해서는 기본적으로 정렬이 되어있어야한다.정렬된 자료구조 안에서 특정 값을 찾을때 절반씩 나누어 값을 찾는다는 것이 핵심적인 아이디어이다. 이분탐색은 탐색을 진행할 때마다 탐색 범위를 반으로 줄인다.분할정복 알고리즘과 유사한데 이분탐색은 분할 정복 알고리즘의 한 예이다. 배열의 중앙에 있는 값을 조사하여 찾고자 하는 항목이 왼쪽 또는 오른쪽 부분 배열에 있는지를 알아내어 탐색의 범위를 반으로 줄인다.찾고자 하는 값이 속해있지 않은 부분은 전혀 고려할 필요가 없기 때문에, 매 단계에서 검색해야 할 리스트의 크기를 반으로 줄일 수 있다.이러한 방법을 반복적으로 사용해 탐색하는 방법이 이진 탐색이다.데이터의 삽입이나 삭제가 빈번할 시에는 적합하지 않고, 주..

Backend/Java 2022.12.07

[Java] 재귀

자신을 정의할 때 자기 자신을 재 참조하는 방법을 재귀라고 한다. 이런식으로 func()라는 메소드를 정의할때func 메소드안에 func을 호출하고 그 호출 한 func 안에 func을 참조하는, 이러한 방법이 재귀이다. 이렇게 함수안에 함수를 재 호출 하다보니 몇가지 고려해야할게 있다. 1. 재귀호출이 너무 반복적으로 많이되면 , 즉 재귀가 깊어지면 Stack OverFlow라는 에러가 발생한다.+ 많이 호출되는 만큼 메모리에 스택되기 때문에 메모리를 엄청 차지한다.+ 호출된 함수를 닫으면서 스택된 메모리에서 pop을 하기 때문에 수행시간도 느려진다.결국 재귀호출을 하다가 메모리가 부족해지는 것과 성능이 저하되는것이 일상이기 때문에 이러한 이유로 재귀호출은 평상시에 알고리즘 자체가 재귀로 하면 자연스..

Backend/Java 2022.12.05

[Java] compareTo()

자바 Wrapper클래스에서 사용 할 수 있는 compareTo() 메소드 - int compareTo(NumberSubClass referenceName) - int compareTo(String anotherString) 숫자비교 Byte,Integer... 등에서 compareTo()를 사용해서 숫자비교를 한다면 자기자신.compareTo() 의 결과로 자기자신이 더크다면 1 자기자신과 크기가 같다면 0 자기자신이 더 작다면 -1 의 결과값을 리턴해준다. 왜이렇게 리턴해주는가 -> 자기 자신이 들어온 값보다 ~더 크다!와 같이 생각하면 편하다 [Java] Comparator , Comparable , 익명객체(클래스) Comparable, Comparator는 모두 인터페이스이다. 인터페이스 이므로..

Backend/Java 2022.12.05

[Java] Set [HashSet]

Set HashSet은 컬렉션 인터페이스를 상속한 Set 인터페이스의 구현클래스(구현체)이다. Set은 집합이라는 뜻이며 , Map과 같이 저장순서를 유지하지않는다(인덱스 없음) 또한 중복값을 허용하지 않는다 (Map처럼) 객체 선언 Set set = new HashSet(); 초기화는 List와 같은 다른 컬렉션 구현체로 바로 가능. List list = new ArrayList(); list.add(2); list.add(2); list.add(2); list.add(2); set = new HashSet(list); bw.write("list to set , 중복값을 넣게되면 하나만 저장된다. :"+ set.toString()); 값추가 Set set = new HashSet(); set.add(5..

Backend/Java 2022.12.05

[Java] 람다 [미완성]

람다 표현식 람다식은 익명함수를 지칭하는 용어이다. 람다식을 사용하기 위해서는 함수형 인터페이스에 접근해서 사용해야한다. 람다식 즉 익명함수를 값으로 사용 할 수도 있으며 파라미터로 전달 및 변수에 대입 하기와 같은 연산들이 가능하다. [Java] Comparator , Comparable , 익명객체(클래스) Comparable, Comparator는 모두 인터페이스이다. 인터페이스 이므로 Comparable, Comparator를 사용하고자 한다면 인터페이스내에 선언된 메소드를 구현해야한다! Comparable 내부에는 compareTo(T o)라는 메소드가 keeeeeepgoing.tistory.com 람다의 표현식 1. 람다는 매개변수의 자료형을 생략할 수 있다, 생략 안하고 적어도 된다. 2. ..

Backend/Java 2022.12.05

[Java] Comparator , Comparable , 익명객체(클래스)

Comparable, Comparator는 모두 인터페이스이다. 인터페이스 이므로 Comparable, Comparator를 사용하고자 한다면 인터페이스내에 선언된 메소드를 구현해야한다! Comparable 내부에는 compareTo(T o)라는 메소드가 있고, Comparable을 사용하고자 한다면 compareTo 메소드를 재정의(오버라이드/구현)을 해줘야한다. Comparator 내부에는 compare(T o1,T o2)라는 메소드가 있다. Comparator을 사용하고자 한다면 compare 메소드를 재정의(오버라이드/구현)을 해줘야한다. 인터페이스 관련 의문해결 Comparator (Java Platform SE 8 ) Compares its two arguments for order. Retu..

Backend/Java 2022.12.04

[Java] Collection (컬렉션) 정리

컬렉션 프레임워크(collection framework) 자바에서 컬렉션 프레임워크(collection framework)란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것 이러한 컬렉션 프레임워크는 자바의 인터페이스(interface)를 사용하여 구현된다. 컬렉션 인터페이스 Collection 인터페이스는 List,Set,Queqe로 크게 3가지 상위 인터페이스로 분류 할 수 있다. List,Queue,Set은 Collection 인터페이스를 extends(확장)한 인터페이스이다. Map은 Collection 인터페이스를 상속받고 있지 않지만 Colle..

Backend/Java 2022.12.04

[Java] 나눗셈

나눗셈을 할때, 반올림을 할때 형변환을 주의해야한다. bw.write(-9/5+"\n"); 의 결과는 -1이다. 정수와 정수의 나눗셈은 정수로 나오기 마련이다. double answer = -9/5; answer에는 어떤값이 담겼을까? -9/5의 결과가 -1이므로 결국 answer의 담긴값은 -1.0이 된다. 나눗셈의 결과로 소숫점을 얻고싶다면 형변환을 해야한다. (float) 또는 (double) 을 분모 또는 분자에 붙여주거나 bw.write((double)-9/5+"\n"); bw.write((float)-9/5+"\n"); 결과 : -1.8 정수.0 과같이 실수화 하면된다. double answer = -9 / 5.0; System.out.println("answer = " + answer); 반..

Backend/Java 2022.12.04

[Java] HashMap

Map 인터페이스를 구현한 대표적인 Map 컬렉션, Map인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고있다. HashMap 코드 일부분public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { ...} Map은 키와 밸류값으로 구성된 자료구조이고 키와 밸류값은 모두 객체이다.값은 중복될 수 있지만 키는 중복 될 수 없다.기존에 저장된 키와 동일한 키을 넣으려고하면 기존의 값은 없어지고 새로운값으로 대체된다.HashMap은 해시함수를 통해 키와값이 저장되는 위치를 결정하므로,사용자는 그 위치를 알 수없고, 삽입되는 순서와 들어 있는 위치 또한 관계가 없다고한다. HashMap 선언HashMa..

Backend/Java 2022.12.04

[Java] Split 메소드 문자열 자르기

String[] split(String regex) split함수는 입력받은 정규표현식 또는 특정문자를 기준으로 문자열을 나누어 배열에 저장하여 리턴한다. 정규표현식 개념 -> https://hbase.tistory.com/160 String temp = "010-1234-5789-1111"; String[] result = temp.split("-"); for (String currentString : result) { bw.write(currentString+"\n"); } 문자열을 "-"를 기준으로 나누고 나눈 문자열들을 배열에 넣어서 리턴해준다. 문자열배열을 출력해봤을때 저장된 값들은 다음과 같다. String[] split(String regex,int limit) 기준 문자말고 받을 수 있는 ..

Backend/Java 2022.12.03