List를 immutable 하게 변경시켜야 할 일이 있어서, UnmodifiableCollection을 쓰게 되었는데요. 이 친구들에 대해서 간단하게 알아보도록 하겠습니다. 아래와 같은 listBuilder 클래스가 있습니다. list에 무언가를 넣고, 8번째 줄에서 Collections.unmodifiableList를 호출합니다. 이 때 어떤 일이 일어날까요? Collection class의 1289번째 줄에 접근합니다. 저는 ArrayList를 넣었으니, RandomAccessList 생성자를 호출할 겁니다. 1397번째 줄에서 부모 생성자를 호출합니다. 1304번째 줄에서 또 부모 생성자를 호출합니다. 여기서 주목할 만한 것은 1301번째 줄의 list는 제가 넣었던 ArrayList의 참조 값이..
immutable 검색 결과
해당 글 2건
java UnmodifiableCollection : 무엇이 다른가요?
레퍼런스/분석
2020. 11. 8. 19:01
왜 mutable한 객체를 java map의 키 값으로 삼으면 조심해야 할까요?
안녕하세요. 조경완입니다. 어제 카톡 방에 이런 질문이 올라왔습니다. mutable한 객체를 키 값으로 넣었고, 맵이나 셋을 넣은 키를 어디선가 변경했는데, 왜 맵이나 셋 계열의 containsKey가 제대로 동작하지 않을까요? 사실, String을 키 값으로 삼으면 문제는 없습니다. 이것은 immutable 하기 때문입니다. 뮤터블의 반대 말이죠. im이 붙으면. 아래 예제 프로그램을 보겠습니다. 코드에서 필요 없는 부분은 생략하였습니다. equals는 x 값이 같으면 true를 리턴하게 되어 있습니다. 그리고 hashCode는 x를 2로 나눈 나머지를 돌려줍니다. Main 함수를 보겠습니다. x에 2, 3을 넣은 객체 a, b를 hashMap에 넣습니다. 그리고, 객체 a의 x값을 2에서 5로 바꿉니..
레퍼런스/분석
2020. 10. 9. 15:12
최근댓글