[java] Java Trove에서의 데이터 역직렬화와 직렬화 방법

Java Trove는 자바의 컬렉션 프레임워크에 대한 고성능 대안으로 알려져 있습니다. Trove는 큰 데이터 집합을 다루는 과정에서 메모리 사용량을 최소화하고 실행 시간을 단축시키는 특징을 가지고 있습니다. 이러한 이유로 Trove는 성능이 중요한 애플리케이션에서 널리 사용되고 있습니다.

이 글에서는 Trove를 사용하여 컬렉션을 직렬화하고 역직렬화하는 방법에 대해 알아보겠습니다. Trove에서 데이터를 직렬화하고 역직렬화하는 과정은 자바의 기본 직렬화와는 약간 다른 방식으로 이루어집니다.

데이터 직렬화하기

Trove에서 컬렉션을 직렬화하기 위해서는 TObjectByteHashMap 또는 TObjectByteHashMap와 같은 Trove의 특정 컬렉션 클래스를 사용해야 합니다. 예를 들어, TIntArrayList를 직렬화하는 방법은 다음과 같습니다:

TIntArrayList list = new TIntArrayList();
list.add(1);
list.add(2);
list.add(3);

TObjectByteHashMap<TIntArrayList> map = new TObjectByteHashMap<>();
map.put(list, (byte) 1);

try (FileOutputStream fos = new FileOutputStream("data.bin");
     ObjectOutputStream oos = new ObjectOutputStream(fos)) {
    oos.writeObject(map);
} catch (IOException e) {
    e.printStackTrace();
}

위의 예제에서는 TIntArrayList를 생성하고 값을 추가한 후 TObjectByteHashMap에 넣고 있습니다. 그런 다음, ObjectOutputStream을 사용하여 TObjectByteHashMap을 파일에 직렬화하고 있습니다.

데이터 역직렬화하기

Trove에서 데이터를 역직렬화하는 과정은 직렬화하는 과정과 반대로 이루어집니다. 다음 코드 예제는 파일에 저장된 Trove 컬렉션을 역직렬화하는 방법을 보여줍니다:

try (FileInputStream fis = new FileInputStream("data.bin");
     ObjectInputStream ois = new ObjectInputStream(fis)) {
    TObjectByteHashMap<TIntArrayList> map = (TObjectByteHashMap<TIntArrayList>) ois.readObject();
    TIntArrayList list = map.keySet().iterator().next();

    System.out.println(list);
} catch (IOException | ClassNotFoundException e) {
    e.printStackTrace();
}

위의 예제에서는 ObjectInputStream을 사용하여 파일로부터 TObjectByteHashMap을 역직렬화하고 있습니다. 역직렬화된 TObjectByteHashMap에서는 키의 집합을 얻을 수 있고, 첫 번째 키인 TIntArrayList를 얻어와 출력하는 예시가 포함되어 있습니다.

참고 자료