2012-10-16 3 views
0

나는 해시 맵의 arraylist를 저장하는 ArrayList.data이라는 파일을 가지고 있습니다. 사용하고있는 프로그램의 제약 때문에 프로그램에서 각 사용자에 대해 새 인스턴스를 만들기 때문에 한 번에 모든 데이터를 추가 할 수 없습니다. 모든 사용자 데이터의 arraylist를 만들려면 파일을 열고 사용자의 데이터를 추가하고 파일을 닫아야합니다.외부 파일에 저장된 ArrayList에 추가

파일에는 해시 맵의 arraylist 만 포함됩니다. 매번이 해시 맵에 추가 할 수있는 방법이 있습니까? 아니면 업데이트 된 추가 버전으로 계속 교체해야합니까?

+0

파일에 arraylist가 있다고하면 ... ObjectOutputStream을 사용하여 직렬화한다는 의미입니까? – Ben

+0

데이터베이스가 존재하는 이유, 특히 인 메모리 데이터베이스가 존재하는 이유가 있습니다. 그리고 JPA를 사용하여 엔티티를 "직렬화"할 수 있습니다. –

답변

2

ArrayList을 저장하기 위해 Java 직렬화를 사용하고 있습니까? 불행하게도이 메커니즘을 사용하면 이미 직렬화 된 양식에 점진적으로 데이터를 추가 할 수 없습니다. 대신 파일을 열고 ArrayList 전체를 비 직렬화하고 하나의 요소를 추가 한 다음 다시 직렬화하여 파일의 이전 데이터를 덮어 써야합니다. 목록이 커지면이 접근법은 실현 가능하지 않습니다.

각각 HashMap (단일 ArrayList<Map<?, ?>> 개 항목)을 개별적으로 일련 번호로 지정할 수 있습니다. 새 항목을 직렬화해야하는 경우이 방법을 사용하면 파일을 열고이 새로운 Map을 끝에 추가하기 만하면됩니다. 당신이 그것을 deserialize하기를 원한다면, 각각 Map을 차례대로 읽고 ArrayList을 재구성하십시오.

관련 문제