2010-03-01 6 views
0

자바 - 사전에 크기를 모른 채 이진 객체를 객체 배열로 읽는 방법은 무엇입니까? 예를 들어 바이너리 파일에 얼마나 많은 "클라이언트"가 있는지 알 수 없으므로 사전에 크기를 모른 채 배열로 읽어들이려면 어떻게해야합니까? 아마 벡터를 사용할 수 있지만 배열을 사용해야합니다.Java - 바이너리 객체를 크기를 몰라도 객체 배열로 읽는 방법은 무엇입니까?

+0

흠 ... 나는 이것에 대해 생각해 봤지만 파일의 전체 크기를 개체의 크기로 나눈 것이 파일 내의 개체 수를 제공합니까? – ShrimpCrackers

+0

왜 '해야합니까?' 이 숙제가 있니? – bmargulies

+0

글쎄, 배열을 사용할 필요가 없습니다. 벡터를 사용하는 방법을 알 수 있습니다. 알 수없는 크기의 배열을 사용하여 벡터를 만드는 방법을 알고 싶습니다. – ShrimpCrackers

답변

2

ArrayList를 만들면 예약 된 크기의 T []가 만들어집니다.

너무 많은 항목을 추가하면 더 큰 새 T []를 만들고 System.arraycopy를 사용하여 내용을 이동합니다.

무한한 숫자의 입력이 가능한 한 최선의 방법입니다. ArrayList의 소스를 읽음으로써 완료되는 것을 볼 수도 있습니다.

실제 크기가 무엇인지 모르는 경우에도 가능한 최대 크기를 보장 할 수있는 경우 다른 해결책이 적용됩니다. 배열을 최대 값만큼 크게 만들고, 배열에 물건을 넣습니다. 완료되면 실제 크기의 최종 배열을 만들고 복사하십시오.

-3

vector 또는 ArrayList와 같은 collections 라이브러리의 내용을 사용하십시오.

+0

질문보기. –

+0

내 대답은 upvoted 된 답변과 거의 동일합니다. 왜 내가 투표를해야합니까? – dominic

+0

bmargulies는/using/ArrayList를 추천하지 않았습니다. 그는 OP가 그것을 복제 할 수 있도록 내부 구현을 설명했다. –

1

공간이 부족할 때 새 배열을 만든 다음 arraycopy을 사용하여 이전 요소를 새 것으로 복사 할 수 있습니다.

관련 문제