2014-11-22 3 views
0

약 1 만 개의 json 덤프가 들어있는 파일이 있습니다. 각 json에는 약 20 개의 필드가 있으며 그 중 5 개의 필드 만 나에게 유용합니다. 파일을 반복하고 각 json을 구문 분석 한 후 추가 처리를 위해 관련 요소를 저장해야합니다.객체 목록 대 객체 목록 HashMaps의 Arraylist

Java에서는 관련 json 필드를 저장하는 효율적인 데이터 구조가 무엇입니까? Object의 ArrayList (다양한 필드를 유지할 Bean을 생성)와 HashMaps의 ArrayList (각 관련 json 필드가 키 값 쌍으로 저장되는) 사이에서 혼란 스럽습니다.

둘 중 어느 것이 메모리 사용 및 계산과 관련하여 더 좋습니까?

답변

1

고정 된 필드 집합이있는 경우 Object는 HashMap보다 작습니다.

HashMap은 각 인스턴스에 대해 키를 String으로 저장해야합니다. 또한 Object의 필드에 액세스하는 것이 훨씬 빠릅니다. Object의 필드에 액세스하는 것은 1 바이트 코드 연산입니다. HashMap에 액세스하려면 지정된 필드의 해시를 계산 한 다음 배열의 요소에 액세스해야합니다.

성능에 관계없이이 특정 문제에 대한 주요 요인이 아닐 수 있으며 Object를 사용하면 더 쉽게 읽을 수 있습니다.

2

사용 사례에 따라 다릅니다. 5 개의 필드를 모두 그대로 사용하려면 데이터베이스에 넣거나 UI에 표시하는 것처럼 첫 번째 방법 (콩 배열). 필드를 선택적으로 사용하려는 경우 (여기서 5 개의 필드를 1 개씩, 5 개의 필드를 하나씩) 사용하면 sceond 접근법이 더 좋습니다 (해시 맵 배열).

2

Bean 목록은 형식 안전성과 가독성이 뛰어납니다. 그 접근법에 문제가 있음을 증명할 때까지 사용하십시오.