내가 HashMap<String, Integer>
이고 키가 단어이고 값이 코퍼스에서 빈도라고 가정 해 보겠습니다. 단어를 일부 정수 (예 : "hello"
은 1
)로 대체하고 대신 HashMap<Integer, Integer>
을 만들려면 메모리가 절약됩니까? 일반적으로 정수는 문자열보다 공간을 덜 차지하지만 키가 해시 함수를 통과하기 때문에 HashMap의 키에 적용 할 수 있는지 여부는 알 수 없습니다. 미리 감사드립니다!정수가 java HashMap의 키와 같이 문자열에 비해 적은 공간을 차지합니까?
답변
HashMap
에 관한 한 String
을 Integer
으로 바꿀 때 메모리 사용에 차이가 없습니다.
HashMap
은 키와 값의 참조 값을 해당 KV 쌍에 저장하고 String
개체를 참조하는 대신 Integer
개체를 참조하기 때문입니다.
모든 용도와 목적으로 Integer
개체와 String
개체의 해시는 HashMap의 저장소 기능에 영향을주지 않습니다.
이것은 'HashMap에 관한 한 모두'사실이지만 그의 질문이 아닙니다. – EJP
사실 그것은 그의 질문 인 @EJP 인 것 같습니다. 당신의 대답은 부적절합니다. Java 오브젝트 (Integer와 String 모두)는 참조에 의해 전달되고 참조로 유지됩니다. – hd1
나는 문장에서 벗어나려고했다. "일반적으로 정수는 문자열보다 공간을 덜 차지하지만 키가 해시 함수를 통과하기 때문에 HashMap의 키에 적용 할 수 있는지 여부를 알지 못합니다." 내 대답은 HashMap의 키가 참조 용이기 때문에 키 유형의 크기에 영향을받지 않는다는 것입니다. –
예, 물론입니다. Integer는 문자열이 비어 있어도 'int'가 'char []'에 대한 참조보다 작고 오프셋, 길이 및 해시 코드에 대해 'ints'가 더 많기 때문에 String보다 작습니다. Integer.valueOf()를 사용하면 캐싱도 있지만, 상수 풀을 통해 String 캐싱이 가능합니다.
그러나 수백만 개의 항목이 없으면 효과는 무시할 수 있으므로 프로그램에 맞는 모든 키를 사용해야합니다.
- 1. HashMap의 키와 값을리스트에 연결
- 2. 왜 valutype은 .NET에서 객체 유형보다 적은 공간을 차지합니까?
- 3. Java 참조는 얼마나 많은 힙 공간을 차지합니까?
- 4. OnTouch에는보기가 공간을 차지합니까?
- 5. 컴파일러는 얼마나 많은 메모리 공간을 차지합니까?
- 6. HashMap의 키와 값을 역전시키는 방법?
- 7. postgresql 인덱스에서 NULLs가 공간을 차지합니까?
- 8. "전체 유니온"보기가 공간을 차지합니까?
- 9. 문자열에 끝에 정수가 포함됩니다.
- 10. 이동 된 div가 여전히 원래 공간을 차지합니까?
- 11. HashMap의 오류 : 다음과 같이 javax.el.PropertyNotFoundException
- 12. 문자열에 정수를 곱하면 정수가 반환됩니까?
- 13. 왜이 테이블은 SQL Server에 비해 MySQL에서 10 배의 디스크 공간을 차지합니까?
- 14. Java Hashmap의 타이핑 시스템은 무엇입니까?
- 15. 데이터 세트의 "null"값이 공간을 차지합니까?
- 16. 클래스의 속성/메소드가 메모리에서 공간을 차지합니까?
- 17. 저장 프로 시저가 데이터베이스의 실제 공간을 차지합니까?
- 18. Android 용 Qt는 얼마만큼의 공간을 차지합니까?
- 19. SQLCipher 데이터가 메모리에서 더 많은 공간을 차지합니까?
- 20. HTML 요소가 왜 그렇게 많은 공간을 차지합니까?
- 21. 왜 material-ui가 너무 많은 공간을 차지합니까?
- 22. 64 비트 시스템에서 32 비트 변수는 64 비트 객체보다 적은 공간을 차지합니까?
- 23. 문자열에 공간을 넣으십시오.
- 24. Java HashMap의 메커니즘
- 25. Java HashMap의 메소드
- 26. NumberFormatException 주어진 입력 문자열에 작은 정수가 있습니다.
- 27. Interop에서 포인터를 사용하여 구조체를 반환하는 경우 많은 메모리 공간을 차지합니까?
- 28. 속성 키의 DynamoDB 저장 볼륨입니다. 더 짧은 속성 키와 속성 유형은 더 적은 저장 공간을 사용합니까?
- 29. Java HashMap의 각 루프에 대해
- 30. Java HashMap의 서브 세트 계산하기
자바에서 Intger의 해시 코드 값과 같으므로보다 효율적이라고 가정 할 것입니다. – gawi