목록전체 글 (191)
개발자 도전기
스트림이란? 컬렉션 및 배열의 요소를 반복 처리하기 위해 사용할 수 있는 API이다. 스트림은 요소들이 하나씩 흘러가면서 처리된다는 의미를 가지고 있다. Stream은 구현체가 없는 인터페이스로, 직접 객체를 생성할 수는 없고. 컬렉션의 stream() 함수를 통해서 Stream 객체를 생성해 Stream 타입에 대입해 줄 수 있다. 중간 연산과 최종 연산 스트림은 중간 연산(intermediate operation) 과 최종 연산(terminal operation)으로 구성되어 있다. 여러 개의 스트림이 연결되어 있는 것을 스트림 파이프라인이라고 한다. List list = List.of(8, 2, 5, 1, 10, 9, 2, 1, 0); list.stream() .sorted(Comparator.re..

같은 값의 요소를 가진 인덱스를 쌍으로 반환하고 그 쌍의 갯수를 구하는 문제이다. 오늘 배운 Map 컬렉션을 활용하기 위해 일부러 Map을 사용해서 풀었다 class Solution { public int numIdenticalPairs(int[] nums) { Map map = new HashMap(); int count = 0; for(int i = 0; i

LIFO와 FIFO 컬렉션 후입선출(LIFO)은 나중에 넣은 객체가 먼저 빠져나가고, 선입선출(FIFO)은 먼저 넣은 객체가 먼저 빠져나가는 구조를 말한다. 컬렉션 프레임워크는 LIFO 자료구조를 제공하는 스택(Stack) 클래스와 FIFO 자료구조를 제공하는 큐(Queue) 인터페이스를 제공하고 있다. Stack Stack 클래스는 LIFO 자료구조를 구현한 클래스이다. 다음은 Stack 객체를 생성하는 방법이다 Stack stack = new Stack(); Stack 클래스의 주요 메소드이다 리턴 타입 메소드 설명 E push(E item) 주어진 객체를 스택에 넣는다 E pop() 스택의 맨 위 객체를 빼낸다 public class Coin { private int value; public Coi..
Map 컬렉션은 키(key)와 값(value)로 구성된 엔트리(Entry) 객체를 생성한다. 여기서 키와 값은 모두 객체이다. Map에서 키는 중복 저장할 수 없다. 다만 값은 중복 저장할 수 있다. 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치된다. Map 인터페이스를 구현한 클래스로는 HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 있다. Map 컬렉션에서 공통적으로 사용 가능한 메소드는 다음과 같다. 키로 객체들을 관리하기 때문에 키를 매개값으로 갖는 메소드가 많다. 기능 메소드 설명 객체 추가 V put(K key, V value) 주어진 키와 값을 추가, 저장이 되면 값을 리턴 객체 검색 boolea..
밀린 자바 복습을 드디어 끝냈다.. 하루만 빠져도 후유증이 엄청나다는걸 실감하게 된다. 이제 해야할 일은 좀 지나갔으니 다시 프로그래머스 문제를 풀 수 있을 것 같다ㅎㅎ TIL 2024.03.19 - [개발공부/JAVA] - [JAVA] Object 클래스 [JAVA] Object 클래스 자바의 모든 클래스는 Object의 자식이나 자손 클래스이다. 따라서 부모 클래스인 Object가 가진 메소드는 모든 객체에서 사용할 수 있다. 다음은 Object가 가진 주요 메소드이다 메소드 용도 boolean eq abc-datatype.tistory.com 2024.03.19 - [개발공부/JAVA] - [JAVA] 포장 클래스 [JAVA] 포장 클래스 포장 클래스란 기본 타입에 대응하는 참조 타입이다. 즉, 기..
제네릭이란? 제네릭이란 결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능이다. 다음과 같이 사용할 수 있다. public class 클래스명 { public T content; } 는 T가 타입 파라미터임을 뜻하는 기호로, 타입이 필요한 자리에 T를 사용할 수 있음을 알려주는 역할을 한다. 해당 클래스의 T는 아직 정해지지 않았지만, 객체가 생성될 시점에 다른 타입으로 대체된다. 제네릭 타입 제네릭 타입은 결정되지 않은 타입을 파라미터로 가지는 클래스와 인터페이스를 말한다. 제네릭 타입은 선언부에 '' 부호가 붙고, 그 사이에 타입 파라미터들이 위치한다. public class 클래스명 {} public interface 인터페이스명{} 타입 파라미터는..
포장 클래스란 기본 타입에 대응하는 참조 타입이다. 즉, 기본 타입의 값을 갖는 객체이다. 기본 타입 포장 클래스 byte Byte char Character short Short int Integer long Long float Float double Double boolean Boolean 포장 객체는 포장하고 있는 기본 타입의 값을 변경할 수 없고, 단지 객체로 생성하는 데 목적이 있다. 이런 객체가 필요한 이유는 컬렉션 객체 때문이다. 컬랙션 객체는 기본 타입의 값은 저장할 수 없고, 객체만 저장할 수 있기 때문에 기본 타입의 값을 객체로 생성해준다. 박싱과 언박싱 기본 타입의 값을 포장 객체로 만드는 과정을 박싱(boxing)이라고 하고, 반대로 포장 객체에서 기본 타입의 값을 얻어내는 과정을 ..
자바의 모든 클래스는 Object의 자식이나 자손 클래스이다. 따라서 부모 클래스인 Object가 가진 메소드는 모든 객체에서 사용할 수 있다. 다음은 Object가 가진 주요 메소드이다 메소드 용도 boolean equals(Object obj) 객체의 번지를 비교하고 결과를 리턴 int hashCode() 객체의 해시코드를 리턴 String toString() 객체 문자 정보를 리턴 equals(Object obj) Object의 equals() 메소드는 객체의 번지를 비교하고 boolean 값을 리턴한다. equals() 메소드는 비교 연산자인 ==과 동일한 결과를 리턴한다. 두 객체가 동일한 객체라면 true를 리턴하고, 그렇지 않으면 false를 리턴한다. 일반적으로 Object의 equals(..

컬렉션 프레임워크는 검색 기능을 강화시킨 TreeSet을 제공한다. TreeSet TreeSet은 이진 트리(binary tree)를 기반으로 한 Set 컬렉션이다. 이진 트리는 여러 개의 노드가 트리 형태로 연결된 구조로, 루트 노드라고 불리는 하나의 노드에서 시작해 각 노드에 최대 2개의 노드를 연결할 수 있는 구조를 가지고 있다. 맨 상단에 있는 것은 루트 노드, 상대적으로 상단에 있는 노드가 부모 노드이고 하단에 있는 노드가 자식 노드이다. TreeSet에 객체를 저장하면 부모 노드의 객체와 비교하여 낮은 것은 왼쪽 자식 노드에, 높은 것은 오른쪽 자식 노드에 저장한다. TreeSet 컬렉션은 다음과 같이 생성할 수 있다. TreeSet treeSet = new TreeSet; Set 타입 변수에..
List 컬렉션은 저장 순서를 유지하지만, Set 컬렉션의 HashSet의 경우 저장 순서가 유지되지 않는다. 또한 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있다. Set 컬렉션은 수학의 집합에 비유될 수 있다. 집합은 순서와 상관없고 중복이 허용되지 않기 때문이다. Set 컬렉션에는 HashSet, LinkedHashSet, TreeSet 등이 있는데, Set 컬렉션에서 공통적으로 사용 가능한 Set 인터페이스의 메소드는 다음과 같다. 인덱스로 관리하지 않기 때문에 인덱스를 매개값으로 갖는 메소드가 없다. 기능 메소드 설명 객체 추가 boolean add(E e) 주어진 객체를 성공적으로 저장하면 true를 리턴하고 중복 객체면 false를 리턴 객체 검색 boolean conta..