2016-09-09 5 views
-2

Java에서 hashmap을 내보내는 방법이 궁금합니다.Java : HashMap 내보내기 및 가져 오기

난 당신을 통해 하나를 정의 알고 :) (

HashMap의 HMAP = 새로운 해시 MAP;

그리고 어떻게 해시 맵에 정보를 추가하거나 삽입 할 수 있는지에 대한 예가 있지만 "hashmap"을 저장하는 방법을 알지 못해 프로그램 실행 중에 추가 된 데이터가 프로그램에서 액세스 한 다른 시간이 추가되었습니다.

기본적으로 프로그램을 실행하면 사용자 이름 뒤에 UserName | Amount 형식의 금액을 추가합니다. 그리고 나서 프로그램을 닫을 수 있습니다. 다음에 프로그램을 열면 사용자 이름을 키로 사용하여 해시 맵을 열고 사용자에게 연결된 금액을 가져올 수 있어야합니다.

이것은 내가 지금까지 그 일을 생각했습니다 유일한 방법이지만, 반드시 다음 제발 그 일을 더 나은 방법이 있는지, 내가 :)

감사를 알려주세요!

+0

일반적으로 정보를 입력 할 때 파일이나 데이터베이스에 저장 한 다음 프로그램이 열릴 때마다 파일이나 데이터베이스에서 읽는 방식으로 수행됩니다. – Ben

+0

예, 이렇게 모았습니다. 이 일을하는 가장 좋은 방법은 뭐라 생각하니? 텍스트 파일? –

+0

실제로 사용 사례에 따라 다르지만 대부분의 경우 XML, JSON 또는 CSV와 같은 일종의 구조화 된 데이터를 사용하면 더 쉽게 처리 할 수 ​​있습니다. 이 포맷 각각에 대한 라이브러리를 찾고 가장 쉽게 보이는 라이브러리를 선택하십시오. Java로만 작업한다면, @Midnightas는 합리적인 해결책이있는 것처럼 보입니다. – Ben

답변

1

데이터를 저장하는 방법은 전적으로 사용자의 선택입니다.
이 경우 java.util.Properties 클래스를 사용하는 것이 좋습니다.
당신은 그것의 내용에 HashMap에 대한 루프를 "저장"다음 Properties 필드에 setProperty 메소드를 호출 할 때마다 :

Properties props = new Properties(); 
props.load(inputStream); // Only call this if your properties file is not empty 
for(Map.Entry<K, V> entry : yourHashMap.entrySet()) { 
    props.setProperty(entry.getKey(), entry.getValue() + ""); 
} 
props.store(outputStream, "Some comment here."); 

가 나는 String 통과되어 있는지 확인 + ""을 추가했다.
"Some comment here."은 분명히 필요하지만 분명히 비워 둘 수 있습니다.

+0

그래, 고마워. 이 파일을 어딘가에 만드나요? 또한 입/출력 스트림은 무엇이 될까요? –

+0

'props.store'의'outputStream' 파일을 파일에 저장하고 싶다면'FileOutputStream'이 될 수 있습니다. – Midnightas

+0

Path outputStream = "/ path/to/anywhere"? 블록 앞에 배치하면 파일이 지정된 위치로 내보내 집니까? –

1

HashMap은 키/값 쌍으로 데이터를 저장할 수있는 데이터 구조입니다. 해시 함수는 키를 고르게 분배하고 검색을 최적화하는 데 사용됩니다.

키는 아무 것이나 문자열은 일반적인 선택이며 값은 모든 Java 클래스가 될 수 있습니다.

실제로는 HashMap을 "닫아"프로그램을 다시 실행하면 다시 열지 않습니다. 이는 실제로 메모리에만 존재하므로 JVM (응용 프로그램)을 중지하면 데이터가 사라집니다.

메모리에있는 데이터가 손실되지 않도록하려면이를 유지해야합니다. 이를 수행하는 데는 여러 가지 방법이 있습니다.

  • SQL, NoSQL 데이터베이스에 유지할 수 있습니다.
  • CSV, XML, JSON, YAML, TOML 또는 사용자 정의 이진 형식과 같은 표준 형식으로 파일로 디스크에 유지할 수 있습니다. Java 클래스를 직접 디스크에 직렬화 할 수도 있습니다.
  • 네트워크를 통해 데이터를 보내서 처리하거나 저장할 다른 서비스를 JSON 또는 XML로 tipically serialize 할 수 있습니다.

귀하의 질문에 따르면 데스크톱 응용 프로그램을 작성하려는 것 같습니다. CSV 나 XML처럼 데이터를 저장하거나 SQLite와 같은 간단한 SQL 데이터베이스를 사용할 수도 있지만, 귀하의 경우에는 MapDB를 사용하는 것이 좋습니다.기본적으로 HashMap으로 사용하고 디스크에 저장할 수 있으며 나중에 디스크에서 다시 읽을 수 있으므로 HashMaps로 할 수있을 것으로 기대했던 것보다 다소 적습니다.

+0

MapDB http://www.mapdb.org의 URL – DrKarl

0

해시 맵은 Serializable입니다. 즉, HashMap을 FileOutputStream으로 백업 한 ObjectOutputStream에 HashMap을 쓸 수 있고 나중에 FileInputStream을 사용하는 ObjectInputStream을 사용하여 파일에서 HashMap을 읽을 수 있습니다. 이것이 자바 프로그래밍 언어에있어 매우 자연스러운 일이다.

다른 사람이 이미 지적한 것처럼 좋은 생각인지 여부는 유스 케이스에 따라 다릅니다.

HashMap의 엔티티도 작동하려면 Serializable이어야합니다.

관련 문제