2024. 5. 30. 12:33ㆍ개발일지
최근 자바 코테도 같이 풀기 시작했는데,
코틀린 풀때도 느꼈지만 어떨때는 size과 맞고 어떨때는 length만 맞는 경우가 있었다.
방금도 자바 코테를 하나 풀었는데 size는 정답이 아니였지만 length는 정답이었다.
이전에 공부하다가 정리해둔 컬렉션에 size에 대해서 적어 두긴 했지만,,
length와 size 차이는 몰랐기에 이에 대해 궁금해졌다...
별거 아닌거일지라도 두 개의 차이가 엄밀히 따져서 존재한다면 코드에 적용을 할 때 좀 더 적합한 걸 작성하는 편이 옳다고 여겨졌기 때문에 찾아보았다.
length는 배열의 길이를 구할 때 사용하지만 size는 흔히 ArrayList 에 사용되지만 , 보통 컬렉션 프레임 워크 타입의 길이를 알고자 할 때 사용된다고 한다.
배열과 문자열은 생성 후 변경 불가능한 객체(immutable object)이고, ArrayList는 변경이 가능한 객체이므로 차이를 알 수 있다.
참고로 length는 상수로 배열이 선언 될 때 최초의 길이를 저장하고 있고 length()는 메소드로 문자열의 길이를 구할 때 사용한다. String이 호출되면 해당되는 문자 수를 리턴하며 열의 크기와 문자의 수는 동일하다고 한다.
length | arrays(int[], double[], String[]) |
length() | String related Object(String, StringBuilder etc) |
size() | Collection Object(ArrayList, Set etc) |
여기서 잠깐 언급한 컬렉션 프레임 워크 타입은 무엇일까?
자바의 컬렉션 프레임워크는 여러 요소가 담긴 컨테이너 객체(컬렉션)를 다루기 위한 표준 방법(프레임워크)을 지칭하는 것으로,
만약에 배열은 만들 때 크기가 고정되어있어서 그 크기를 초과한다면 더이상 데이터를 저장할 수가 없다...그래서 데이터를 삭제하면 해당 인덱스의 데이터는 비어있기 때문에 메모리가 낭비되는 등 여러 문제점들이 발생한다.
이러한 배열의 문제점을 해결하기 위해 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색, 저장)할 수 있는 자료구조들을 만들어 둔 것이라고 보면 된다.
List, Set, Map, Stack, Queue 등이 대표적이다.
나중에 참고해도 좋을 것 같다!
https://stackoverflow.com/questions/20192843/difference-between-size-and-length-methods
Difference between size and length methods?
What is the difference between .size() and .length ? Is .size() only for arraylists and .length only for arrays?
stackoverflow.com
'개발일지' 카테고리의 다른 글
TIL 20240619 num_list.last()와 num_list[num_list.size - 1]의 차이 (0) | 2024.06.19 |
---|---|
TIL 20240609 반복문에서 ..와 until의 차이 (1) | 2024.06.09 |
TIL 20240521 - toUpperCase() 와 uppercase()의 차이? (0) | 2024.05.21 |
WIL 20240519 (0) | 2024.05.19 |
TIL 20240317 - CORS(Cross-Origin Resource Sharing) (0) | 2024.03.27 |