분류 전체보기106 [Java] Collection Framework 종류 2019. 4. 2. [자료구조] 01. hash, hashSet 중복 제거 Hash란? 어떠한 데이터를 어떠한 알고리즘에 의해 일정한 길이의 문자로 바꿈. 한 글자만 바뀌어도 연산의 결과는 전혀 달라짐. 리눅스 암호화 과정에서 ID와 Password를 받을 때에도 해쉬화 된 값으로 비교한다. 해쉬를 가지고 원래의 데이터를 복원하기란 어렵기 때문이다. 또한 검색 속도가 가장 빠른 구조인데, 데이터 저장시 해쉬 값으로 정렬되어 검색할 때 해쉬 값으로 한번에 데이터의 위치를 찾을 수 있기 때문이다. Database에서도 검색시 hash 알고리즘을 사용한다.(해쉬는 중복이 불가능 하지만, 동일한 해쉬가 생성될 경우 링크드 리스트를 사용해 적재한다. ) HashSet 중복제거 hashSet은 hash 알고리즘을 사용한 자료구조이다. hash는 기본적으로 중복이 불가능한데, 같은 값인지가.. 2019. 4. 2. [자료구조] ArrayList 추가, 출력, 수정, 삭제, 삽입 물리적으로 연속적인 구조를 가진다순차적인 데이터 추가, 출력(읽기 전용)에서 가장 빠른 구조검색: 운 나쁘면 가장 뒤에서 발견삽입: 중간에 넣을 때 뒤에 있는 데이터를 전부 뒤로 밀어야함삭제: 중간에 삭제할 때 뒤에 있는 데이터를 전부 앞으로 당겨야함확장: 물리적으로 연속된 공간을 확보하지 못하면, 전체 데이터를 복사한 후 새로운 공간(새로운 배열을 생성)에 할당해야함. 2019. 4. 2. [Java] 13. StringTokenizer 사용법, 예제 String 클래스에서 split()함수가 문자열을 쪼개 배열에 저장해주는 함수였다면, StringTokenizer 클래스는 보다 간단하게 문자열을 토큰 단위로 나눠주는 함수이다. 구분자의 default 값은 공백으로, 구분자를 입력하지 않으면 공백에서 끊어준다. String phoneNum = "TEL 82-02-997-2059"; StringTokenizer str1 = new StringTokenizer(phoneNum); while(str1.hasMoreTokens()) System.out.println(str1.nextToken()); 공백과 구분자를 모두 토큰으로 사용할 수 있다. StringTokenizer str2 = new StringTokenizer(phoneNum, " -"); whi.. 2019. 4. 1. [Java] 12. Math Class - BigDecimal, BigInteger, MathContext BigDecimal 오차없는 실수 표현을 위한 클래스. 32bit 정수를 표현 가능하며, 숫자형으로 표현할 수 있는 범위를 넘었기 때문에 문자열로 값을 전달한다. // 소수점 오차 발생 double e1 = 1.6; double e2 = 0.1; System.out.println("두 실수의 덧셈: "+(e1+e2)); System.out.println("두 실수의 곱셈: "+(e1*e2)); // double형인 매개변수가 전달될때 이미 Error가 발생 BigDecimal b1 = new BigDecimal(1.6); BigDecimal b2 = new BigDecimal(0.1); System.out.println("두 실수의 덧셈: "+b1.add(b2)); System.out.println("두.. 2019. 4. 1. [Java] 11. 예외처리(Exception) 상속구조, finally, throws 등장 배경 C언어 시절에는 예외처리를 if문(if, else if, else)으로 처리했다. 단점은 실행코드와 예외처리 코드가 지나치게 반복되고, 실행코드보다 예외처리코드가 훨씬 더 많아지게 되었다. 그러므로 코드의 가독성이 낮아지는 결과도 생겼다. 그래서 C++은 실행코드 영역과 예외처리 영역을 분리하는 예외처리 문법을 도입하였다. 자바는 C++을 모태로 탄생되었고, C++에 비해서 예외처리를 훨씬 더 강화해 설계하였다. 상속 구조 예외(Exception)와 에러(Error)는 모두 Throwable의 상속을 받는다. 예외는 내(프로그래머)가 짠 코드 상의 문제가 있는 것으로 코드를 수정하면 해결되고, 에러는 시스템 상에서 발생한 비정상적인 상황으로 프로그래머의 통제를 받지 않는다. Finally tr.. 2019. 3. 29. [Java] 10. 인터페이스(Interface), 의존성 주입 無常 : 만물이 끊임없이 변해 한 순간도 동일한 상태로 머물러 있지 않음 이처럼 개발환경도, 소프트웨어도, 고객의 요청도 계속 변한다. 이에 프로그램 설계의 유연성을 위해 등장한 것이 인터페이스이다. Interface : 접점, 규약, 약속 클래스의 상속(extends): 하위 분류 A는 상위 분류B의 한 종류이다(→A is a kind of B) 인터페이스의 상속(implements): 구현 클래스A는 인터페이스B 할 수 있어야 한다(→A is able to B) 인터페이스에 선언하는 매서드는 자동으로 public abstract가 붙는다. 인터페이스에 선언하는 필드는 자동으로 public final static가 붙는다. 의존성 주입(Dependency Injection) : 클래스 내부에서 결정하지.. 2019. 3. 28. [Java] 09. 추상클래스(abstract) (설계 관점에서) 클래스의 종류1. 구현 클래스모든 매서드가 이미 구현되어져 상속된다. 일반적인 클래스. 2. 추상 클래스단 1개라도 구현되지 않은 매서드가 존재하는 것. 매서드 명은 있으나 기능을 구현하지 않은 것 → 판단의 여지를 남겨두는 상황. 구현 안 된 매서드가 있으므로 객체 생성이 안 됨(실체화 불가), 무조건 상속을 전제로 만들어진 클래스. 3. 인터페이스 클래스모든 매서드가 구현되어 있지 않음. Spec, 상세서, 명세서를 작성할때 사용. 클래스와 클래스 간의 통신하는 방식을 의미. 추상 클래스 예시>>> 정규직, 계약직, 파트타임 세 가지 유형의 직원을 가진 회사의 급여산정 프로그램을 만든다고 해보자. 고용유형 별 급여 산정 기준이 다르기 때문에 부모클래스인 직원클래스에서 매서드를 구현하.. 2019. 3. 27. [Java] 08. 매서드 오버라이딩(Method Overriding), 오버로딩과의 차이 매서드 오버라이딩(Method Overriding)부모가 이미 구현해 놓은 매서드를 대신하거나 추가 확장하는 것즉, 자식 클래스에 부모 매서드와 동일한 매서드를 구현하는 것부모 참조변수에 담아도 실제 자식 객체의 매서드를 호출하게 됨(편의성 > 일관성)그러나, 부모 참조변수에서는 자식 객체의 매서드 호출 불가장점: 매개변수를 최상위 부모변수로 매서드 1개만 만들면 된다 !!!!부모(Generalization - 일반적), 자식(Realization - 구체적) public class Speaker { private int volumeRate; void showCurrentState() { System.out.println("볼륨 크기: +volumeRate"); } void setVolume(int vo.. 2019. 3. 26. 이전 1 ··· 6 7 8 9 10 11 12 다음