HashMap의 모든 키를 소문자로 바꾸고 싶습니다. (이유는 묻지 말고 그냥해야합니다). HashMap에는 수백만 개의 항목이 있습니다.소문자로 된 모든 HashMap 키
처음에는 새 맵을 만들고 소문자로 만들 맵의 항목을 반복하고 각 값을 추가한다고 생각했습니다. 이 작업은 하루에 한 번만 실행해야하므로이 작업을 수행 할 수 있다고 생각했습니다. 내 서버가 나는지도를 복사하고 있었다이 한 시간 동안 과부하 때
Map<String, Long> lowerCaseMap = new HashMap<>(myMap.size());
for (Map.Entry<String, Long> entry : myMap.entrySet()) {
lowerCaseMap.put(entry.getKey().toLowerCase(), entry.getValue());
}
이
그러나, 일부에서 OutOfMemory 오류를 일으켰습니다.내 질문은, 어떻게하면이 작업을 가장 작은 메모리 풋 프린트로 수행 할 수 있습니까?
소문자를 제거한 후에 각 키를 제거할까요? 새로운지도 도움말에 추가 되었습니까?
이렇게 빨리 java8 스트림을 사용할 수 있습니까? 새로운지도
에 추가 - (이 같은 예를 들어 뭔가)Map<String, Long> lowerCaseMap = myMap.entrySet().parallelStream().collect(Collectors.toMap(entry -> entry.getKey().toLowerCase(), Map.Entry::getValue));
업데이트 이 Collections.unmodifiableMap
그래서 난 후 소문자로 각 키를 제거
의 옵션이 없습니다 있다는 것
당신이 처음에 낮은 맡았다 키를 삽입 할 수 없습니다 : 여기
몇 가지 유사한 질문입니까? – Eran아니요 ... API를 사용하여이지도를 가져와 - 내 코드가 아닙니다. – sestus
원래 키의 대소 문자를 구분해야합니까? – davidxxx