리우's IT Story
article thumbnail
728x90
반응형

2023.06.07 - [JAVA기초] - 람다식 , 최상위클래스 Object

 

람다식 , 최상위클래스 Object

2023.06.07 - [JAVA기초] - 추상클래스, 추상메서드, 익명클래스 ,인터페이스,함수형인터페이스 추상클래스, 추상메서드, 익명클래스 ,인터페이스,함수형인터페이스 2023.06.02 - [JAVA기초] - 스태틱 (stati

ji7290.tistory.com

 

 

 컬렉션 프레임워크
여러객체들을 일정한 구조에 묶어서 저장하는 클래스
List, Set, Map

 

List는 : 선형 자료구조,
배열과 유사하게 각 index를 이용하여 구분한다.
리스트는크기가 자동으로 조정되고, 추가 ,삭제, 등의 메서드를 제공한다. 값의 중복을 허용한다.

 

 

리스트의 메서드

 

리스트의 객체를 추가하는 메서드 

 

 

 

 

 

리스트에서 index를 이용하여 특정요소를 불러오기
리스트에서 삭제되는 것은 아니다.

get함수로 0,1,2,3 번째에 값을 넣어준다.

 

 

index번째 객체를 삭제한다. 

remove로 1번째 index를 삭제하고 난 후 의 결과

 

만약 1번째에있는 값인 10을 지우고자  직접 값을 넣게 되버리면 

이렇게 예외가 발생한다.  remove 괄호 안에는 무조건 index번호를 넣어야한다. 

 

 

 

remove와 size

 

 

 

반복되는 작업을 처리하는 별도의 메서드가 있다.

 


 

 

<컬렉션의 제네릭 타입>

컬렉션에 들어가는 객체는 기본적으로 Object로 취급된다.
특정 프로그램에서는 보통 특정 타입의 객체만 다루게 되고
Object로 업캐스팅 되어 있으면 특정 메서드를 호출하기 위해 다운캐스팅을 수행해야 한다.
불필요한 다운캐스팅을 하지 않기 위해서 리스트에 들어가는 객체의 표준 타입을 지정할 수 있다.
자바 1.5 이후로는 제네릭 타입을 지정하는 것이 기본 권장 사항이다.

 

제네릭타입이 String(문자열) 로 선언되어 있기때문에 

int형인 10을 추가할 수 없다. 

 

 

add의 괄호 안에  문자열로 넣는다. 

 

list와 반복문의 시너지 
for-each
for문 

 

for문으로 list에 담긴 값을 순차적으로 꺼낼 수 도 있고.

for each문으로 간단하게 꺼낼 수 있다. 

 

 

<리스트와 자바 문자열 내장함수의 시너지 >
contains
indexOf 
remove if
sort 

 

contains : 포함하고 있으면

 

 

indexOf : 값을 찾아내기 

 

removeIf : 있으면 지워라 

car, dinosaur가 지워짐

 

 

sort(정렬) : 자바의 String은 comparator를 가지고 있다. 

abc순으로 정렬된 리스트

 


 

set (집합)  : 비선형 자료구조, 순번이 없고 값의 중복들을 허용하지 않는다.
중복되면 안되는 값을 저장하기 위해 사용 여러 요소에서 중복값을 제거하기 위해 사용할 수 있다.

 

 

 

중복값은 허용할 수 없다  =  값 20이 하나로 줄었다.

 

 

순번이 없기 때문에 for문을 쓸 수 없지만
for - each문을 사용해서 불러올 순 있다.

ex ) list = 페레로로쉐  ,  set = 하리보 

 

 

set의 내장함수에 get은 없다 (순번이 없기 때문)

 

 

1에서 45 사이에 중복없는 숫자 6개를 뽑아서 오름차순으로 정렬하여 한 줄 에 출력하세요

 

내가 작성하다가 막힌 코드 

1. set -> list로 바꾸는 것에서 막힘

2. list에서 어떻게 정렬해야하는지. 

 

 

강사님 코드

 

 


 

Map : key와 value를 1:1 맵핑하여 저장하는 자료구조
배열 및 리스트의 index 대신 임의의 key를 이용하여 value에 접근한다.
key는 중복될 수 없고, value는 중복될 수 있다.

 

map의 key는 array의 index 역할을 한다.
index는 항상 0부터 시작하는 정수이지만 key는 원하는 임의의 값을 넣을 수 있다.
index와 마찬가지로 key가 중복되는 경우는 없다.
value는 중복이 가능하다 key를 이용하여 value에 접근할 수 있다.
value를 이용하여 역으로 key를 조회할 수 없다.

 

 

 

 

 

value는 중복이 가능하다 key를 이용하여 value에 접근할 수 있다.

 

 

 

value를 이용하여 역으로 key를 조회할 수 없다.

value "이지은"에 해당하는 key가 없다. 

 

 

map에서 key의 모음 혹은 value의 모음을 추출할 수 있다.
keyset은 Set의 특징을 그대로 가진다 (순서가 있고, 중복이 없다)

 

 

 

순환자 :iterator 
인터페이스로 key와 value 값을 순환해서  꺼내올 수있다. 

 

 

 

 

List. Set, Map은 Java, utill 패키지에 포함되어 있다.
List, Set, Map은 인터페이스이므로, 인터페이스를 implements하는 클래스로 생산한다.

 

728x90
반응형
profile

리우's IT Story

@LRWoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!