Java 16일차..클래스 및 자료구조

박상우·2022년 8월 17일
post-thumbnail

Integer 클래스

Integer 클래스

  • java.lang 패키지 아래에 있다.
  • 정수(int)와 관련된 편의기능을 제공한다.
  • 이 자체의 객체가 정수 값이 되기도 한다.
  • 멤버 속성 (Double, Long, 등 수 관련 타입에서 사용가능하다.)
    - MAX_VALUE : 정수 타입(int)이 가질 수 있는 최대 값을 가지고 있다.
    • MIN_VALUE : 정수 타입(int)이 가질 수 있는 최대 값을 가지고 있다.
  • 정적 메서드
    - parseInt(x) : <int타입> 전달된 문자열 x를 정수 타입으로 반환한다. 이를 정수로 변환할 수 없다면, NumberFormatException이 발생한다.
    • toString(x) : <String 타입> 전달된 정수 x를 문자열로 변환하여 반환한다.
    • valueOf(x) : <Integer 타입> 전달된 정수 혹은 문자열인 x를 Integer 타입의 객체로 반환한다.

String 클래스

String 클래스

  • java.lang 패키지 아래에 있음.
  • 문자열과 관련된 편의 기능을 제공함.
  1. 비정적 메서드
  • equals(x) : <boolean타입> 해당 문자열이 전달 받은 문자열 x와 일치하는지의 여부를 반환한다.
  • endsWith(x) : <boolean타입> 해당 문자열이 전달 받은 문자열 x로 끝나는지의 여부를 반환한다.
  • startsWith(x) : <boolean타입> 해당 문자열이 전달 받은 문자열 x로 시작하는지의 여부를 반환한다.
  • indexOf(x) : <int 타입> 해당 문자열이 전달 받은 문자열 x를 처음으로 가지는 순번(인덱스)을 반환한다. 가령 "Hello".indexOf("l")은 2를 반환한다. 만약 포함하지 않는다면 -1을 반환한다.
  • lastIndexOf(x) : <int 타입> 해당 문자열이 전달 받은 문자열 x를 마지막으로 가지는 순번(인덱스)을 반환한다. 만약 포함하지 않는다면 -1을 반환한다. 가련 "Hello World".lastIndexOf("l")은 9를 반환한다.
  • length() : <int타입> 해당 문자열의 길이를 반환한다.
  • replace(x, y) : <String타입> 해당 문자열에서 전달 받은 문자열 x를 찾아 문자열 y로 치환하여 반환한다. 가령 "Hello".replace("l", "r")은 "Herro"를 반환한다.
  • replaceAll(x, y) : <String타입> 해당 문자열에서 전달 받은 문자열 x에 해당하는 정규식에 해당하는 부분을 찾아 문자열 y로 치환한다.
  • replaceFirst(x, y) : <String타입> 해당 문자열에서 전달 받은 문자열 x를 가장 앞에있는 한개만 찾아 문자열 y로 치환한다.
  • split(x) : <String[] 타입>해당 문자열에서 전달 받은 문자열 x를 기준으로 나눈 문자열 배열을 반환한다.
  • subString(x) : <String타입> 해당 문자열이 가지는 순번(인덱스)을 기준으로 전달 받은 정수인 x번째 글자부터 문자열 끝까지를 반환한다. 가령 "Hello World".subString(6)은 "World"를 반환한다.
  • subString(x, y) : <String타입> 해당 문자열이 가지는 순번(인덱스)을 기준으로 전달 받은 정수인 x번째 글자부터 y번째 글자 앞 까지를 반환한다. (x는 포함, y는 미포함)
  • toLowerCase() : <String타입>해당 문자열이 가지는 모든 알파벳을 소문자로 치환하여 반환한다.
  • toUpperCase() : <String타입>해당 문자열이 가지는 모든 알파벳을 대문자로 치환하여 반환한다.
  • trim() : <String타입>해당 문자열의 앞/뒤에 오는 공백을 제거한다.
  • contains(x) : <boolean타입> 해당 문자열이 전달 받은 문자열 x를 포함하는지의 여부를 반환한다. indexOf(x) > -1과 같다.
  • charAt(x) : <char타입> 해당 문자열이 가지는 순번(인덱스)을 기준으로, 전달 받은 정수 x번째의 문자를 반환한다.
  • concat(x) : <String타입> 해당 문자열에 전달 받은 문자열 x를 이어붙여 반환한다.
  • matches(x) : <boolean타입> 해당 문자열이 전달 받은 문자열 x에 해당하는 정규식을 만족하는가의 여부를 반환한다.
  • equalsIgnoreCase(x) : <boolean타입> 해당 문자열이 전달 받은 문자열 x와 일치하는지의 여부를 반환하는데 대/소 문자를 구분하지 않는다.
  • getbytes() : <byte[]> 해당 문자열을 바이트 배열로 반환한다.
  • toCharArray() : <char[]> 해당 문자열이 가지는 문자를 배열로 반환한다.
  1. 정적 메서드
  • format(x,y...) : 주어진 문자열 x가 가지는 형식에 맞게 y값 들을 대입하여 문자열로 반환한다.
    - %d : 정수(byte, short, int, long, Byte, Short, Integer, Long)
    • %c : 문자(char, Character)
    • %s : 문자열(String)
    • %f : 실수(float, double, Float, Double)
    • %o : 8진법(Octal)
    • %x : 16진법(Hexadecimal)
  • valueOf(x) : <String타입> 주어진 값 x(정수, 문자 등)를 문자열로 변환하여 반환한다.

자료구조

  1. Collection : 순서나 집합적인 원소의 저장 공간
    1-1. List : 순서가 있는 데이터
    1-1-1. ArrayList<[T]> : 동기화를 보장하지 않는 리스트
    1-1-2. Vector<[T]> : 동기화를 보장하는 리스트
    1-1-3. Stack<[T]> : LIFO(Last In First Out). 재귀적 호출이 필요한 경우 사용하는 리스트.(마지막에 들어간 것이 제일 먼저 호출된다.)

    !!! Stack만 가지는 몇가지 Method*
    - 기본적으로 Stack은 동기화를 보장한다.
    - push(x) : 해당 Stack에 원소를 추가한다.
    - pop() : 해당 Stack에서 원소를 빼온다.
    - peek() : 해당 Stack에 있는 원소 중 가장 마지막으로 push된 원소를 반환한다.

1-1-4. LinkedList<[T]>

ArrayList<T타입> 및 Vector<T타입>와 유사하나 원소(노드, Node)의 접근 방법이 일반 배열이 아니고, 각 원소로 하여금 앞과 뒤의 원소에 대한 정보를 가지게 하여 특정 작업에서의 속도가 보다 유리하다.
(1의 원소와 2의 원소가 있다는 가정하에, 1의 원소는 2의 원소가 자신의 뒤에 있다는 것을 알고 있다는 뜻이다.)
- LinkedList와 ArrayList 둘다 List인터페이스를 implements하고 있다.
- ArrayList<T타입>보다 추가/삭제가 월등히 빠르다. 단, 반복을 통한(특히 순번(인덱스))반복 및 조회에는 상당히 취약하다.
- 추가/삭제에 대한 시간 복잡도는 O(1).
- 조회에 대한 시간 복잡도는 O(n). (ArrayList는 특정 원소를 조회시 몇번째인지 바로 알 수 있지만 LinkedList는 특성상 3번째원소를 찾으려고 할 경우 첫번째부터 조회를 하며 다 찾아봐야한다는 단점이 있다.)

List Method :

  • add(x) : T타입의 객체인 x를 추가한다.
  • clear() : 해당 ArrayList가 가지고 있는 원소를 모두 제거한다.
  • contains(x) : <boolean타입> 해당 ArrayList가 객체 x를 원소로 가지고 있는지의 여부를 반환한다.
  • get(x) : [T] 해당 ArrayList가 가지는 원소의 순번 중 정수 x에 해당하는 T타입의 객체를 반환한다.
  • indexOf(x) : <int타입> 해당 ArrayList가 가지는 원소 중 전달된 T타입 객체 x와 동일한 원소의 순번(인덱스)을 반환한다.
  • isEmpty() : <boolean타입> 해당 ArrayList가 원소를 가지고 있지 않는가에 대한 여부를 반환한다. size() == 0과 동일하다.
  • lastIndexOf(x) : <int타입> 해당 ArrayList가 가지는 원소 중 전달된 T타입 객체 x와 동일한 마지막 원소의 순번(인덱스)을 반환한다. 동일한 원소가 없다면 -1을 반환한다.
  • remove(x) : 해당 ArrayList가 가지는 원소 중 전달된 int타입에 대한 순번에 해당하는 원소를 제거한다.
  • remove(x) : 해당 ArrayList가 가지는 원소 중 전달된 T타입의 객체와 동일한 첫번째 원소를 제거한다.
  • toArray() : <Object[]> 해당 ArrayList가 가지는 원소에 대한 Object 배열을 반환한다.
  • toArray(new T[0]) : <T[]> 해당 ArrayList가 가지는 원소에 대한 T타입의 배열을 반환한다.
  • <T타입 >stream() : <Stream<T타입>>해당 List에 대해 Stream API를 사용하기 위한 객체를 반환한다.
  • size() : 해당 ArrayList가 가지는 원소의 개수를 반환한다.
  • sort(Comparator) : 해당 ArrayList가 가지는 원소들에 대해 전달된 Comparator 방식으로 정렬한다.
    1. Comparator.naturalOrder() : 오름차순에 대한 Comparator를 반환한다.
    1. Comparator.reverseOrder() : 내립차순에 대한 Comparator를 반환한다.
  • set(x, y) : 해당 ArrayList가 가지는 원소중 전달된 int타입에 대한 순번에 해당하는 원소를 T타입의 객체 y로 치환한다.

1-2. Set : 순서가 없는 데이터(집합적, 인덱스가 없음)

1-2-1. HashSet : 원소들을 비교할 때 equals()가 아닌 hashCode()로 비교를 한다.

1-2-2. SortedSet<T타입> : 정렬이 유의미한 값들에 대한 Set이다.
1-2-2-1. TreeSet<T타입> : 이진 탐색 트리(Binary Search Tree) 구조로 레드-블랙-트리(Red-Black-Tree) 기법을 활용하여 값을 추가하며 시간 복잡도가 낮다. 최대O(operation)(n/2)

HashSet Method :

  • add(x) : <boolean 타입>해당 HashSet에 T타입의 객체 x를 추가한다. 단, 이미 존재한다면 추가하지 않음. 추가를 했다면 true를, 안(못)했다면 false를 반환한다.
  • clear() : 해당 HashSet이 가진 원소를 모두 제거한다.
  • clone() : 해당 HashSet이 가진 원소를 복사하여 새로운 HashSet을 반환한다. 단, 원소는 얕은 복사(Shallow Copy).
  • contains(x) : <boolean 타입> 해당 HashSet이 전달된 T타입 객체 x를 가지고 있는지의 여부를 반환한다.
  • remove(x) : 해당 HashSet에서 전달된 T타입 객체 x와 동일한 원소를 제거한다. 무언가 제거를 했다면 true를, 제거한게 없다면 false를 반환한다.
  • size() : <int 타입> 해당 HashSet이 가지고 있는 원소의 개수를 반환한다.
  • iterator() : <Iterator<T타입>> 해당 HashSet이 가지고 있는 원소들을 반복(Iteration)할 수 있는 객체를 반환한다.

Iteration 반복

  • Iteration은 순서와 관계없고 순번이 없는 Collection에 대해 반복코자할 때 사용한다.
  • Iterator<T타입> 객체는 최초에 아무것도 카리키고 있지 않다.
  • 각 원소를 반복할 때 Iteration 말고 향상된 for 문으로도 사용할 수 있다.
  • hasNext() : <boolean타입> 현재 가리키고 있는 것 다음 원소가 있는지의 여부를 반환한다. 만약 false가 반환되었다면 더 이상 가리킬게 없다는 의미.
  • next() : <T타입> 가리키는 대상을 다음으로 넘기고 새롭게 가리키게 된 객체를 반환한다.
  1. Map : 키와 값 쌍(Key-Value Pair)으로 이루어진 데이터의 저장 공간
    2-1. HashMap<K, V> : 키와 값쌍(Key-Value Pair)으로 이루어져있다. 동기화를 보장하지 않는다.
    2-2. HashTable<K, V> : HashMap<K, V>와 같으나 동기화를 보장한다.
    2-3. SortedMap<K, V> : 키 값에 대한 정렬이 유의미한 쌍들에 대한 Map이다.
    2-3-1. TreeMap<K, V> : 키에 대해 이진 탐색 트리(Binary Search Tree)구조로 레드-블랙-트리(Red-Black-Tree) 기법을 활용하여 값을 추가하며 시간 복잡도가 낮다. 최대 O(n/2)

HashMap Method :

  • clear() : 해당 Map이 가지는 모든 쌍을 제거한다.
  • containsKey(K) : <boolean타입> 해당 Map이 전달된 K타입의 객체를 키로 가지는 쌍이 있는지의 여부를 반환한다.
  • containsValue(V) : <boolean타입> 해당 Map이 전달된 V타입의 객체를 값으로 가지는 쌍이 있는지의 여부를 반환한다.
  • entrySet() : <Set<Map.Entry<K,V>> 해당 Map이 가지는 키와 값에 대한 쌍을 Map.Entry타입을 제네릭으로 하는 Set을 반환한다. 키와 값 쌍을 반복해야 할때 사용한다.
  • get(K) : <V타입> 해당 Map에서 K타입 객체를 키로 가진 쌍의 V타입 값을 반환한다. 없다면 null을 반환한다.
  • getOrDefault(K, V) : <V타입> 해당 Map에서 전달 받은 K타입 객체를 키로 가지는 쌍이 있다면 그 쌍의 값을, 없다면 전달 받은 V타입 객체를 반환한다. 여기서 전달인자 V를 null로 지정하면 그냥 get과 같음.
  • isEmpty() : <boolean 타입> 해당 Map이 쌍을 가지고 있지 않은가의 여부를 반환한다.
  • keySet() : <Set<K 타입>> 해당 Map이 가지는 쌍들의 키를 Set으로 반환한다.
  • put(K, V) : K타입 객체를 키로, V타입 객체를 값으로 가지는 쌍을 추가한다.Map 이 가지는 키는 중복될 수 없음으로 만약 이미 존재하는 키에 대한 쌍을 put했다면 기존에 존재하는 키-값 쌍에서 값을 새로운 V타입 객체로 지정한 뒤 기존의 값을 반환한다. 만약 기존에 키-값 쌍이 없었다면 null을 반환한다.
  • putIfAbsent(K, V) : <V타입> 해당 Map이 가지는 쌍 중 전달 받은 K타입의 객체를 키로하는 쌍이 없다면 put하고 null을 반환하지만 이미 존재한다면 해당 쌍의 값을 반환하고 추가는 하지 않는다.
  • remove(K) : <V타입> 해당 Map이 가지는 쌍 중 전달된 K타입 객체를 키로 가지는 쌍이 있다면 제거하고 이의 값을 반환한다. 없다면 null을 반환한다.
  • replace(K, V) : <V타입> 해당 Map에서 전달된 K타입 객체를 키로 가지는 쌍이 있다면 그 쌍의 값을 전달된 V타입 객체로 대체한 뒤 기존의 값을 반환한다. 만약 그러한 쌍이 없다면 null을 반환하며 추가하지도 않는다.(put과 다름)
  • size() : <int타입> 해당 Map이 가지는 쌍의 개수를 반환한다.
  • values() : <Collection<V 타입>> 해당 Map이 가지는 쌍들의 값을 Collection으로 반환한다.
profile
백엔드 개발자가 되기 위한 여정

0개의 댓글