HashMaps에 대한 질문이 있습니다. 우리는 small-c (-ish) 컴파일러를 작성하고 있으며이를 위해 심볼 테이블을 사용하고 있습니다. 해시 맵을 사용하여이를 구현합니다.Java HashMap 중복 버킷 항목
이제 스코프를 고려하기 위해 스택을 사용합니다. 따라서 우리가 새로운 범위에 들어갈 때마다 스택에 이것을 나타내는 토큰을 푸시합니다. 그러면 우리가 만나는 모든 심볼에 대해 해시 맵의 모든 키를 스택에 넣습니다. 여태까지는 그런대로 잘됐다.
범위를 종료하면 토큰에 도달 할 때까지 스택을 팝합니다. 이 전에 우리가 통과 한 모든 기호를 해시 맵에서 제거해야합니다.
코드의 다음 조각을 감안할 때 :
{
a = 5;
{
a = 5;
}
}
는 해시 맵이 이것을 받아 들일 것인가? 에서와 같이, 나는 그들을 열쇠로 사용하여 그들을 입력 할 것입니다. 그건 문제가되지 않지만 자바 스크립트가 터지면서이를 제거해야 할 때 Java는 두 객체간에 차이를 만들 수 있습니까? 아니면 두 번째가 첫 번째를 덮어 씁니까?
나는 그것을 읽었다. 그러나 실제로 이것은 답변입니다. – KWyckmans