2012-10-16 5 views
-2

기본적으로 나는 몇 개의 슈퍼 클래스를 가지고 있으며, 작은 서브 클래스 중 하나는 작은 프로그램을 구성합니다. 파일 처리에 관해서는 "배열"을 사용하고 있었기 때문에 writeObject와 readObject 메서드를 사용했습니다. 그러나 이제는 모든 배열을 "ArrayLists"로 변경했습니다. 그러나 파일 처리와 관련하여 이전처럼 명확하게 작동하지 않습니다.Java에서 파일을 읽고 쓰는 것 (ArrayList를 사용하여)

내가 오류이 개 특정 부분이있다는 처음이다 :

for(i=0;i<100;i++) 
{ 
customerOOS.writeObject(Customer[i]);//since we no longer have (Customer[]) array, and instead Custarray of arraylist 
} 

. . .

두 번째 부분은 :

for (i=0;i<100;i++) 
{ 
Customer[i] = (Customer)customerOIS.readObject();//same problem again 
} 

그래서, 이러한 부품을 교체해야하는지, 그래서 그것은 작동합니다. 아니면 완전히 다른 방법으로 ArrayLists의 파일 처리를해야합니까?

답변

0

ArrayListObjects의 컨테이너 인 List (동적 배열이 뒷받침 됨)의 구현입니다.

이 컨테이너에는 요소 목록을 관리 할 수있는 매우 구체적이고 문서 방법이 있습니다.

목록에서 요소를 검색하려면, 새로운 요소를 추가하려면 List#get(int)

for(i=0;i<Customer.size();i++) 
{ 
    customerOOS.writeObject(Customer.get(i)); 
} 
for (i = Customer.size(); i < 100; i++) { 
    customerOOS.writeObject(null); 
} 

를 사용해야합니다, 당신은 좀 시간이 걸릴 것 List#add(Object)

for (i=0;i<100;i++) 
{ 
    Customer.add((Customer)customerOIS.readObject()); 
} 

를 사용할 필요가 API 문서를 공부하고 매우 기본적인 개념이므로 Collections 흔적을 읽으십시오.

+0

감사합니다! 다시 두 번째 루프 (어떤 요소를 추가)에 대한 내 질문에, 루프 내에서 선언문에 선언 된 "i"는 어디에 사용합니까? –

+0

필요가 없습니다. 'ArrayList'는 동적 배열입니다. 즉, 동적으로 배열 할 수 있습니다. [API 설명서] (http://docs.oracle.com/javase/7/docs/api/java/util/List.html)와 [Collections] (http : // docs. oracle.com/javase/tutorial/collections/index.html) 트레일, 특히 [The List Interface] (http://docs.oracle.com/javase/tutorial/collections/interfaces/list.html) – MadProgrammer

+0

거기서 가정합니다. get (i) 부분이 잘못되어 실행하는 동안이 오류가 발생합니다. java.lang.IndexOutOfBoundsException : 인덱스 : 0, 파일 크기 : 0 java.util.ArrayList.RangeCheck에서 \t (ArrayList.java:547) java.util.ArrayList.get (ArrayList.java:322)에서 \t \t at FileHandling.main (FileHandling.java:39) –

관련 문제