본문 바로가기

Java

(73)
[Java] Arrays - 배열을 쉽게 다루고 싶다면 Arrays 배열을 다루기 편리한 메서드(static) 제공 배열의 출력toString( ): 오버라이딩 된 형식으로 배열을 출력해준다(ex. [1, 2, 3, 4, 5] ) 배열의 복사copyOf( ): 정해진 개수만큼 배열을 복사해준다.copyOfRange( ): 정해진 범위까지 복사해준다.(from  배열 채우기fill( ): 배열을 원하는 값으로 채운다.setAll( ): 난수로 배열을 원하는 값으로 채운다.(람다식 사용) 배열의 정렬과 검색sort( ): 배열을 정렬한다.binarySearch( ): 이진 탐색(정렬되어 있을 때만 사용) 다차원 배열 출력deepToString( ): 다차원 배열의 출력 다차원 배열의 비교deepEquals( ): 다차원 배열의 비교 배열을 List로 변환 asL..
[Java] Iterator, Listlterator, Enumeration 목차Iterator, Listlterator, EnumerationIterator 쓰는 이유Iterator의 장점Iterator의 메서드Iterator의 사용방법Iterator 예제Map과 Iterator의 관계  Iterator, Listlterator, Enumeration컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스핵심은 hasNext(확인)와 next(읽기) 메서드 Enumeration은 Iterator의 구버전Listlterator는 Iterator의 접근성을 향상시킨 것 (단방향 => 양방향) - previous( )  Iterator를 쓰는 이유컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것컬렉션 마다 생긴 것(구조)이 달라서 요소를 읽어오는 방법이 다른데 그것을 표준화 한 것..
[Java] Stack과 Queue 목차Stack과 QueueStack과 Queue 메서드Stack과 Queue의 활용예제 Stack과 Queue스택(Stack): LIFO(Last in First Out)구조. 마지막에 저장된 것을 제일 먼저 꺼내게 된다.push(저장)pop(추출)큐(Queue): FIFO(First in First)구조. 제일 먼저 저장한 것을 제일 먼저 꺼내게 된다.offer(저장)poll(추출)스택을 구현하려면 배열, 큐를 구현하기에는 링크드 리스트가 효율적이다. 스택 클래스의 메서드Stack stack = new Stack();   큐 인터페이스의 메서드Queue que = new LinkedList();    큐를 구현한 클래스 찾기큐는 인터페이스이기 때문에 큐를 구현한 적절한 클래스를 찾아서 객체를 만들면 된..
[Java] LinkedList 특징 목차배열의 장단점LinkedList 특징LinkedList 종류ArrayList vs LinkedList 성능비교 배열의 장단점 장점배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다.놀랍게도 배열의 첫 번째 요소를 읽는 시간과 마지막 요소를 읽는 시간은 똑같다.인덱스가 n인 데이터의 주소 = 배열의 주소 + n * 데이터의 크기  단점1. 크기를 변경할 수 없다.크기를 변경해야 하는 경우 새로운 배열을 생성 후 데이터를 복사해야 함.그렇다고 크기의 변경을 피하기 위해 충분히 큰 배열을 생성하면, 메모리가 낭비됨.더 큰 배열을 만든다.기존 내용 복사참조를 변경해야 한다.2. 비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다.배열 중간에 있는 데이터를 추가, ..
[Java] 컬렉션 프레임워크, ArrayList 목차컬렉션 프레임워크란 무엇일까?컬렉션 프레임워크의 핵심 인터페이스, 특징컬렉션 인터페이스의 메서드ArrayList의 메서드ArrayList 예제ArrayList에 저장된 객체의 삭제과정(배열 복사 문제) 컬렉션(collection) 여러 객체(데이터)를 모아 놓은 것을 의미  프레임워크(framework)표준화, 정형화된 체계적인 프로그래밍 방식라이브러리 + 표준화된 프로그래밍 방식제한적이지만 생산성이 높아지고 유지보수가 쉬워짐표준화 되지 않으면 다른 사람이 짜놓은 코드를 다른 사람이 보기 어렵다.  컬렉션 프레임워크컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공(저장, 삭제, 검색, 정렬)많은 수의 데이터(다수의 객체)를 다루는데 ..
[Java] Arrays로 배열 다루기 문자열 비교와 출력 - equals( ), toString( )int[] arr = {0, 1, 2, 3, 4};int[][] arr2D = {{11, 12}, {21, 22}};System.out.println(java.util.Arrays.toString(arr)); // 배열System.out.println(java.util.Arrays.deepToString(arr2D)); // 2차원 배열[0, 1, 2, 3, 4][[11, 12], [21, 22]] String[][] str2D = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}};String[][] str2D2 = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}};Sys..
[Java 복습] 추상 클래스, 인터페이스 추상 클래스미완성 설계도. 미완성 메서드를 갖고 있는 클래스abstract class Player { // 추상클래스(미완성 클래스) abstract void play(int pos); // 추상메서드(몸통{}이 없는 미완성 메서드) abstract void stop(); // 추상 메서드} 다른 클래스 작성에 도움을 주기 위한 것(인스턴스 생성 불가)Player p = new Player(); X 상속을 통해 추상 메서드를 완성해야 인스턴스 생성가능구현: 추상 메서드 구현 해주기AudioPlayer ap = new AudioPlayer(); // Ok (AudioPlay는 Player를 구현한 구현 클래스)Play p = new AudioPlayer(); // OK 실제 p에 쓸 수있는 것은..
[Java] 예외 처리 활용 앞서 만든 프로그램은 반환 값을 사용해서 예외를 처리했습니다. 이런 경우 다음과 같은 문제가 있었습니다. 정상 흐름과 예외 흐름이 섞여 있기 때문에 코드를 한눈에 이해하기 어렵다. 심지어 예외 흐름이 더 많은 코드 분량을 차지한다. 실무에서는 예외 처리가 훨씬 더 복잡하다. 우리가 처음 만들었던 프로그램에 자바 예외 처리를 도입해서 이 문제를 점진적으로 해결해보겠습니다. public class NetworkClientExceptionV2 extends Exception{ private String errorCode; public NetworkClientExceptionV2(String message, String errorCode) { super(message); this.errorCode = error..