Java Array와 ArrayList의 차이점 상세 정보
1) 상세한 설명:
ArrayList를 "자동으로 용량이 증가하는 Array"라고 상상할 수 있습니다.
2) Array([]): 가장 효율적입니다.그러나 그 용량은 고정적이고 동적으로 바꿀 수 없다.
ArrayList: 용량이 동적으로 증가합니다.그러나 효율을 희생한다.
3) 권장 사항:
효율과 유형 검사를 바탕으로 가능한 한 Array를 사용해야 하며, 그룹의 크기를 확정할 수 없을 때만 ArrayList를 사용해야 합니다!
그러나 당신이 더욱 일반화된 문제를 해결하려고 시도할 때, Array의 기능은 지나치게 제한될 수 있다.
4) Java의 모든 객체이며 Array도 객체입니다.당신이 사용한 Array형이 어떻든 간에,
Array 이름 자체는 실제적으로reference로heap 안에 있는 실제 대상을 가리킨다.
이 대상은 "Array 초기화 문법"을 통해 자동으로 생성될 수도 있고, new 표현식으로 수동으로 생성될 수도 있습니다.
5) Array는 함수 반환값으로 사용할 수 있습니다. 왜냐하면 그 자체가 대상의reference이기 때문입니다.
6) 대상 수조와 기본 유형 수조는 운용에 있어서 거의 똑같다. 유일한 차이점은 전자가 가지고 있는 것은reference이고 후자는 기본 유형의 값을 직접 가지고 있다는 것이다.
예:
string [] staff=new string[100];
int [] num=new int[10];
7) 용기가 가지고 있는 것은 하나하나reference가 Object를 가리키기 때문에 임의의 형태를 저장할 수 있다.물론 이것은 기본형별을 포함하지 않는다. 왜냐하면 기본형별은 그 어떤classes에서도 계승되지 않기 때문이다.8) Array를 마주하면 기본 유형별 수치인 Array(예: int []num;)를 직접 보유할 수 있습니다.reference(대상을 가리키는) Array를 소지할 수도 있습니다.그러나 용기류는reference(대상을 가리키는 것)만 가지고 있으며, 기본형을 용기에 넣으려면 wrapper류를 사용해야 한다.그러나 wrapper류는 사용하기가 쉽지 않을 수도 있다. 또한primitives Array의 효율은'기본형 외복류(reference)를 수용하는 용기'보다 너무 좋다.
물론 당신의 조작 대상이 기본적인 유형이고 공간이 부족할 때 자동으로 용량을 늘려야 한다면 Array는 적합하지 않습니다. 이때 외복류 용기를 사용해야 합니다.
9) 어떤 경우 용기류는 원래의 유형으로 바뀌지 않아도 틀림없이 작동할 수 있다.특히 특별한 경우가 있다. 컴파일러는 Stringclass에 대해 매끄럽게 작동할 수 있도록 추가 지원을 제공한다.
10) 수조에 대한 기본적인 조작, 예를 들어 정렬, 검색과 비교 등은 흔히 볼 수 있다.따라서 Java에서 Arrays 클래스를 사용하여 이 몇 가지 작업을 지원합니다:sort (), binarySearch (), equals (), fill (), asList ().
그러나 Arrays 클래스는 삭제 방법을 제공하지 않았습니다. Array List에remove () 방법이 있습니다. Array에서 삭제 등의 조작이 필요하지 않은 이유인지 알 수 없습니다.
11) ArrayList의 사용도 간단합니다. ArrayList를 생성하고add()를 이용하여 대상을 삽입하고 get(i)를 이용하여 색인 값과 결합하여 꺼냅니다.이 모든 것은 Array의 사용 방식과 완전히 같다. 단지 적지 않을 뿐이다.
2. 참고 자료:
1) 효율성:
수조 확장은 ArrayList 효율에 비교적 큰 영향을 미치는 요소이다.
Add,AddRange,Insert,InsertRange 등 원소를 추가하는 방법을 실행할 때마다 내부 수조의 용량이 부족한지 검사합니다. 만약에 그렇다면 현재 용량의 두 배로 수조를 재구성하여 낡은 원소를 새 수조에 복사한 다음에 낡은 수조를 버려야 합니다. 이 임계점의 용량 확장 작업은 효율에 비교적 영향을 미칠 것입니다.
Array List는 Array의 복잡한 버전입니다.
Array List 내부에 Object 유형의 수조를 봉인했다. 일반적인 의미에서 볼 때 수조와 본질적인 차이가 없다. 심지어 Array List의 많은 방법, 예를 들어 Index, Index Of,Contains,Sort 등은 내부 수조를 바탕으로 Array의 대응 방법을 직접 호출한다.
2) 유형 인식:
ArrayList가 객체에 저장될 때 유형 정보를 버리고 모든 객체가 Object로 차단되며 컴파일할 때 유형을 검사하지 않지만 실행할 때 오류가 발생합니다.
Array List와 수조의 차이는 주로 동적 용량 증가의 효율 문제 때문이다
3) ArrayList는 String 등과 같은 모든 개체를 저장할 수 있습니다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.