티스토리 뷰

■자료구조 : 데이터 관리하고 저장하는 것. 의미 없던 데이터를 자료구조를 통과하면 하나의 정보가 됨.
ArrayList : 여러 개 데이터가 들어올 때, index로 데이터 관리할 때 사용
Set : 집합
 - 구현 클래스
HashSet
집합에서는 중복되는 원소를 포함할 수 없는 것처럼
HashSet이라는 자료구조는 중복되는 값을 무시한다.
저장된 값들은 인덱스가 없기 때문에 순서가 없다.
값의 유무 검사에 특화되어 있는 자료구조이고
해쉬코드로 유무 검사가 진행되고 속도가 상대적으로 좋다.
순서가 없어서 값을 가져올 수가 없음.
검사에 적합한 자료구조, contains() 특화,

DBMS에서는 검색, 조회 빨라야 함

 - 순서 부여 : iterator()
순서가 없는 객체에 순서를 부여하거나, 순서가 있어도 iterator 방식의 순서로 변경하고자 할 때 사용한다.
hasNext()를 통해 다음 값이 있는 지 검사하고, next()를 사용하여 값을 가져온다.
while사용해서 반복문을 돌리고, hasNext에서 다음 값이 없으면 반복문 탈출

hashSet에서 값을 가져올 수 없는데 iterator라는 방법을 사용해서 값을 가져올 수 있다.
iterator에서는 값이 있니? 응, 가져오기 >> 순서따위는 필요 없음.

(클래스 : HashSetTest)

equals()를 재정의했다면, hashCode()도 재정의해야 한다.
hashCode()로 비교하는 자료구조가 여러 번 나타나기 때문에
equals()만 재정의하게 되면 원하는 값으로 비교하지 않고, 필드의 주소로 비교하는 상황이 발생한다.
따라서 equals()에서 비교한 값을 hashCode()의 리턴값으로 재정의해야 한다.

Set은 검사의 목적이 있기 때문에 순서 정보를 관리할 필요가 없어서 데이터 크기에 상관없이 검색에 걸리는 시간이 매우 짧다.
반면 ArrayList는 index를 관리해야 하기 때문에 상대적으로 시간이 오래 걸린다.
그러므로 기능적 차이가 없다면 Set을 사용한다.

(패키지 : hashSetTest)

----------------------------------------
■ Map
 - 구현 클래스 
HashMap(서버 간 데이터 교환)
Key와 Value 한 쌍으로 저장되며, 검색의 목적을 가지고 있다.
Key는 중복된 값을 넣으면 Value가 최근 값으로 수정되고
중복되지 않은 값을 넣으면 새롭게 추가된다.
Value는 중복이 가능하다.


검색의 목적, 두 개의 자료구조가 합쳐져 있는 구조, Key-Value, 순서가 없음,
Key는 중복이 있으면 안됨, Set(순서X)
Value는 중복이여도 됨, Collection(순서O)
put(값넣기), get(값가져오기)을 주로 사용
텍스트가 전송속도가 제일 빠름 > 텍스트 형식 JSON 사용

(클래스 : HashMapTest)


Json 실습
(패키지 : hashMapTest)

-----

람다식 : 익명메소드

메소드가 구현이 되어있지 않아서 람다식으로 메소드를 구현하는 것.

메모리에 올리기 위해서는 구현이 되어 있어야 함. 구현을 하기 위해서 람다식문법으로 간편하게 함.

추상메소드를 구현한 람다식은 구현한 필드의 주소값으로 봐라..!

람다식을 매개변수로 쓸 수도 있고, 리턴에도 넣을 수 있다.

----------------------------------------
■ 람다식의 Stream API
■forEach()
여러 값을 가지고 있는 컬렉션 객체에서 forEach 메소드를 사용할 수 있다.
forEach 메소드에는 Consumer 인터페이스 타입의 값을 전달해야 한다.
Consumer는 함수형 인터페이스이기 때문에 람다식을 사용할 수 있다.
매개변수에는 컬렉션 객체 안에 들어 있는 값들이 순서대로 담기고,
화살표 뒤에는 실행하고 싶은 문장을 작성한다.
■IntStream.range(start, end) : start부터 end-1까지
■IntStream.rangeClosed(start, end) : start부터 end까지

■chars() : 문자열을 IntStream으로 변경
■map() : 기존 값을 원하는 값으로 변경
■filter() : 조건식을 작성하여 false일 경우 제외시킨다.
■sorted() : 정렬
■collect() : 결과를 다양한 타입(문자열, list, map 등)으로 리턴해준다.

■Collectors.joining("구분점");
문자열 타입의 값을 원하는 구분점으로 연결하여 리턴한다.
문자열 타입이 아닌 값은 joining을 사용할 수 없다.

■<참조형>
변수 받아서 바로 쓰는 것 >> 참조형
System.out::println
메소드의 소속::사용할메소드

전달받은 매개변수를 그대로 메소드에 사용할 경우에는 참조형 문법을 사용할 수 있다.
소속::메소드명 --> 전달받은 값을 메소드의 매개변수로 바로 전달해준다.

(클래스 : StreamTest)

실습
      1~10까지 ArrayList에 담고 출력
      1~100까지 중 홀수만 ArrayList에 담고 출력
      ABCDEF를 각 문자별로 출력
      A~F까지 ArrayList에 담고 출력
      A~F까지 중 D제외하고 ArrayList에 담고 출력
      5개의 문자열을 입력받은 후 모두 소문자로 변경(String.toLowerCase())
      Apple, banana, Melon 중 첫번째 문자가 대문자인 문자열 출력
      한글을 정수로 변경
      정수를 한글로 변경

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함