2011-09-13 3 views
1

대 ArrayLists의 상대적인 장점이 배열 목록에 요소를 추가하는 경우, 하나 하나, :자바 ArrayLists 주문 및 예를 들어 벡터

ArrayList alist = new ArrayList(); 
alist.add("A"); 
alist.add("B"); 
alist.add("C"); 
alist.add("D"); 

그리고 검색은 alist, 말에 의한 세 번째 요소를 말한다. get (2), 내가 추가 한 세 번째 요소를 검색 할 수 있을까요?

첫 번째 질문에 대한 대답이 예라고 가정하면 질문의 두 번째 부분 : ArrayList와 Vector를 언제 사용하겠습니까? 그 반대의 경우도 마찬가지입니다.

답변

6

"보장"? 질문의 두 번째 부분에 대한 대답 때문에 대답하기가 어렵습니다.

ArrayList는 기본적으로 동기화되지 않습니다. 벡터입니다.

멀티 스레드 응용 프로그램을 실행중인 경우 ArrayList는 공유 가능하고 쓰기 가능한 상태이며 올바르게 동기화되지 않았으므로 보증이 그리 확고하지 않습니다.

단일 스레드에서 실행중인 경우 작성한 코드는 "C"를 반환합니다.

동기화가 비싸고 항상 가격을 지불하고 싶지 않을 수도 있기 때문에 ArrayList를 선호해야합니다.

0

예, 추가 한 세 번째 요소를 가져올 수 있습니다.

단일 스레드 코드로만 작업하는 경우 ArrayList를 사용하십시오. 목록이 스레드로부터 안전한지 확인해야하는 경우 Vector를 사용하십시오.

0

예, 요소는 프리미티브 배열과 마찬가지로 추가 한 순서대로 색인이 생성됩니다.

deprecated이므로 절대적으로 필요한 경우에만 벡터를 사용합니다.

0

질문의 첫 번째 부분에 대한 답변이 "예"이면 "C"가 표시됩니다.

단일 스레드가 ArrayList를 조작 (추가/제거) 할 때 ArrayList를 사용해야합니다. 두 개 이상의 스레드가 조작 (추가/제거)하면 Vector를 사용해야합니다. 벡터는 스레드 안전입니다. 이 도움이 되었기를 바랍니다.