2014-09-05 4 views
-1

본문의 궤적을 나타내는 csv 데이터 파일이 있습니다. 형식은 t, x, y, x입니다. 매번 파일을 읽지 않고 주어진 시간에 좌표에 쉽게 액세스하기 위해 일종의 HashMap에 그 입자의 히스토리를 저장하려고합니다. 내 두려움은 키와 값이 원시 타입이 아닌 객체라는 것입니다. 그래서, 이런 식으로하는 것이 좋은 생각입니까? 예를 들어 HashMap을 채우려면 Doubles가 전역 적으로 정의되어 연속적인 액세스를 위해 주소가 잘 정의되어 있어야한다고 생각합니다. 맞습니까?double 키를 Java에서 키로 사용하는 방법

+0

예 Double을 키로 사용할 수 있습니다 ... – Ajit

+0

Double을 키로 사용할 수 있습니다. 그러나 정밀도의 문제가있을 수 있습니다. 지도에 값 0.00001의 키가 있고 키 0.000099가 있는지 알고 싶다면 어떻게해야할까요? – Eran

+1

일반적으로 시간은 긴 값으로 표시됩니다. 시간에 따라 좌표를 찾는 데 관심이 있으시다면, 귀하의 키는 Double이 아닌 Long이 될 것입니다. – ControlAltDel

답변

0

IdentityHashMap과 같은 ID 맵을 제외한 맵은 equals() 메서드를 사용하여 주요 동등성을 검사합니다.

그래서,만큼 equals() 방법의 의미에 의해 정의 된 「등가 "만큼 서로 다른 인스턴스를 사용할 수있다 .. (해시 대한만큼 hashcode 방법 equals와 조리로 매핑)하여 더블 대하여 두 이러한 요구 사항은 Double입니다.

그러나 이중 숫자는 정밀도를 잃을 수 있으므로 일종의 계산으로 얻은 두 배를 사용하면 소수점이 다를 수 있습니다 (예 : 8.999999 및 9). 지도가 제대로 작동하지 않습니다.

+0

고마워요! 범위 문제는 어떻습니까? while 루프에서 맵을 채우고 프로그램이 끝날 때 루프 내에서 Doubles가 만들어지면 오브젝트가 범위를 벗어나서 파괴됩니다. – bluePhlavio

+0

지도에서 키로 사용되는 경우 맵은 해당 맵에 대한 참조를 가지므로 맵이 범위를 벗어나지 않는 한 루프를 종료하더라도 느슨하게되지는 않습니다. 너는 묻고있어. –

+1

네, 고맙습니다 ... – bluePhlavio

관련 문제