Java Arraylist의 4 가지 방법 트래버스 및 Java에서 Arraylist 클래스 사용
패키지 com.test; import java.util.arraylist; import java.util.iterator; import java.util.list; public class arraylistdemo {public static void main (String args []) {list <string> list = new arraylist < string> (); "Luojiahui"); "Luojiafeng"); (IT1.next ()); for (string tmp : list) {system.out.println (tmp)}; get (i));}}}추신 : Java에서 ArrayList 클래스 사용
1. ArrayList 란 무엇입니까?
Arraylist는 MSDN 용어로서는 다음과 같은 이점을 제공합니다.
동적으로 증가하고 요소를 감소시킵니다
Icollection 및 Ilist 인터페이스를 구현하십시오
배열 크기의 유연한 설정
2. ArrayList를 사용하는 방법
가장 간단한 예 :
ArrayList List = 새로운 ArrayList (int i = 0; i <10; i ++). 5); // (int i = 0; i <3; i ++)에 대한 6 번째 요소를 제거합니다. // 3 더 추가 목록을 추가하십시오. add (i+20); .toArray (typeof (int32)); // ArrayList에 포함 된 배열을 반환합니다
이것은 간단한 예입니다. 배열 목록의 모든 방법을 포함하지는 않지만 가장 일반적으로 사용되는 Arraylist 사용법을 반영 할 수 있습니다.
3. Arraylist의 중요한 방법과 속성
1) 생성자
ArrayList는 세 가지 생성자를 제공합니다.
public arraylist ();
기본 생성자는 기본 (16) 크기로 내부 배열을 초기화합니다.
Public Arraylist (icollection);
icollection 객체로 구성되고 컬렉션의 요소를 Arraylist에 추가합니다.
Public ArrayList (int);
지정된 크기로 내부 배열을 초기화하십시오
2) issynchronized 속성 및 Arraylist.synchronized 메소드
issynchronized 속성은 현재 ArrayList 인스턴스가 스레드 동기화를 지원하는지 여부를 나타내며 ArrayList.synchronized static 메서드는 ArrayList 스레드 동기화 캡슐화를 반환합니다.
비 스레드 동기화 인스턴스를 사용하는 경우 다중 스레드에 액세스 할 때 스레드 동기화를 유지하려면 잠금 잠금을 수동으로 호출해야합니다.
ArrayList list = new ArrayList ();
syncroot 속성은 실제로 그 자체이지만 iCollection의 Syncroot 정의를 충족시키기 위해
여기서 우리는 여전히 syncroot를 사용하여 소스 코드의 표준화를 유지합니다.
{list.add ( "항목 추가");arraylist.synchronized 메소드에 의해 반환 된 인스턴스를 사용하는 경우, 스레드 동기화 문제는 실제로 스레드 동기화를 보장합니다 ArrayList.synchronized 인스턴스에 의해, 각 속성은 잠금 키워드를 사용하여 스레드 동기화를 보장합니다.
3) 카운트 속성 및 용량 속성
카운트 속성은 현재 ArrayList에 포함 된 요소 수 이며이 속성은 읽기 전용입니다.
용량 속성은 Arraylist가 현재 포함 할 수있는 최대 숫자입니다.
4) 추가, 추가, 추가, 제거, 제거, 리무지, 삽입, InserTrange를 추가하십시오
이 방법은 비슷합니다
추가 메소드는 현재 목록 끝에 요소를 추가하는 데 사용됩니다.
AddRange 메소드는 현재 목록의 끝에 요소 배치를 추가하는 데 사용됩니다.
제거 방법은 요소를 삭제하고 요소 자체의 참조를 통해 삭제하는 데 사용됩니다.
removeat 메소드는 요소를 삭제하고 값을 색인하여 삭제하는 데 사용됩니다.
리무니어링은 시작 인덱스와 삭제 수를 지정하여 삭제되는 요소의 배치를 삭제하는 데 사용됩니다.
삽입은 지정된 위치에 요소를 추가하는 데 사용되며 목록 뒤의 요소는 차례로 뒤로 이동합니다.
INSERTRANGE는 지정된 위치에서 수의 요소를 추가하는 데 사용되며 목록 뒤의 요소는 차례로 뒤로 이동합니다.
또한 몇 가지 유사한 방법이 있습니다.
명확한 방법은 모든 기존 요소를 지우는 데 사용됩니다.
포함 된 메소드는 객체가 목록에 없음을 찾는 데 사용됩니다.
나머지는 MSDN을 확인할 수 없습니다.
5) 트림 크기 방법
이 방법은 Arraylist를 실제 요소의 크기로 고정하는 데 사용됩니다. 동적 배열 요소가 추가되지 않기로 결정하면이 방법이 호출되어 여분의 메모리를 제거 할 수 있습니다.
6) ToArray 방법
이 메소드는 ArrayList 요소를 새 배열로 복사합니다.
4. 배열리스트 및 배열 변환
Example 1:
ArrayList = New ArrayList () Add.add (2); ;
Example 2:
ArrayList = New ArrayList () ADD (2); ;
위는 ArrayList에서 Array로 변환하는 두 가지 방법을 소개합니다.
Example 3:
ArrayList List = New ArrayList () ADD ( "String"; ; / /올바른 문자열 [] value = (string []) list.toarray (typeof (string));
배열과 다르기 때문에 객체 배열로 변환 할 수 있으므로 Arraylist 메서드를 호출 할 때 다른 유형의 요소를 추가하는 것이 실수하지 않습니다. 모든 요소에 의해 올바르게 변환 될 수 있습니다. 그렇지 않으면 변환 할 수없는 예외가 발생됩니다.
5. ArrayList 사용에 대한 최선의 조언
이 섹션에서는 ArrayList와 Array의 차이점과 ArrayList의 효율성에 대해 설명합니다.
1) ArrayList는 복잡한 버전의 배열입니다
Arraylist는 일반적으로 배열 배열을 캡슐화합니다.
실제 요소의 크기를 결정하십시오. 동적 배열 요소가 추가되지 않도록 결정되면이 방법은 여분의 메모리를 제거 할 수 있습니다.
6) ToArray 방법
이 메소드는 ArrayList 요소를 새 배열로 복사합니다.
4. 배열리스트 및 배열 변환
Example 1:
ArrayList = New ArrayList () Add.add (2); ;
Example 2:
ArrayList = New ArrayList () ADD (2); ;
위는 ArrayList에서 Array로 변환하는 두 가지 방법을 소개합니다.
Example 3:
ArrayList List = New ArrayList () ADD ( "String"; ; / /올바른 문자열 [] value = (string []) list.toarray (typeof (string));
배열과 다르기 때문에 객체 배열로 변환 할 수 있으므로 Arraylist 메서드를 호출 할 때 다른 유형의 요소를 추가하는 것이 실수하지 않습니다. 모든 요소에 의해 올바르게 변환 될 수 있습니다. 그렇지 않으면 변환 할 수없는 예외가 발생됩니다.
5. ArrayList 사용에 대한 최선의 조언
이 섹션에서는 ArrayList와 Array의 차이점과 ArrayList의 효율성에 대해 설명합니다.
1) ArrayList는 복잡한 버전의 배열입니다
Arraylist는 객체 유형 배열을 캡슐화합니다 배열의 방법.
2) 내부 객체 유형의 영향
일반적인 참조 유형의 경우이 부분은 큰 영향을 미치지 않지만 값 유형의 경우 ArrayList에 요소를 추가하고 수정하면 포장 및 미확가 부류링 작업이 발생하며 빈번한 작업은 효율성에 영향을 줄 수 있습니다.
그러나 대부분의 사람들에게 대부분의 응용 프로그램은 값 유형의 배열을 사용합니다.
이 영향을 제거 할 수있는 방법은 없습니다. 사용하지 않으면 효율성 손실의 일부가 필요하지만 손실 의이 부분은 크지 않습니다.
3) 배열 확장
이것은 Arraylist의 효율성에 더 큰 영향을 미치는 요소입니다.
Add, AddRange, Insert, InserTrange 및 기타 방법을 실행할 때마다 내부 배열의 용량이 불충분한지 확인하고 현재 용량의 배열을 재건하고 이전 요소를 새로운. 배열 에서이 중요한 지점에서의 확장 작업은 더 많은 영향을 미칩니다.
예 1 : 예를 들어, 200 개의 요소가있는 데이터가 기본 크기 16 요소로 생성 된 Arraylist에 동적으로 추가되면 다음과 같습니다.
16*2*2*2 = 256
4 개의 확장이 최종 요구 사항을 충족하므로 다음과 같은 경우
ArrayList List = New ArrayList (210);
방향으로 배열리스트를 작성하면 4 회 배열 생성 및 복사 작업을 줄일뿐만 아니라 메모리 사용량도 줄입니다.
예 2 : ArrayList는 예상 30 요소로 작성됩니다.
ArrayList List = New ArrayList (30);
실행 프로세스 중에 31 개의 요소가 추가되면 배열은 60 개의 요소로 확장되며 현재 Trimsize 메소드가 호출되지 않으면 확장 작업이 있습니다. . 현재로서는 사용하십시오.
ArrayList List = New ArrayList (40);
그런 다음 모든 것이 해결됩니다.
따라서 가능한 요소를 올바르게 추정하고 적절한 시간에 트림 크기 방법을 호출하는 것은 ArrayList 사용 효율성을 향상시키는 중요한 방법입니다.
4) 자주 indexof, 포함 및 기타 방법 (정렬, 이진 검색 및 기타 제곱
메소드로 인한 효율 손실은이 열에서는 최적화됩니다.) 무엇보다도 ArrayList는 동적 배열임을 분명히해야합니다. 여기에는 키나 값을 통해 빠르게 액세스되는 알고리즘이 포함되지 않습니다. Indexof, 포함 및 기타 방법을 실행하기가 간단하므로 이러한 방법을 자주 호출하는 것이 루프를 직접 작성 하고이 요구 사항을 최적화하는 것보다 빠르지 않습니다. Hashtable 또는 SortedList와 같은 값 쌍.
arraylist al = new arraylist (); al.add ( "how"); al.add (300); al.add (1.2); al.add (22.8);