개체의 속성을지도 항목의 키로 사용하는 것은 나쁜 습관입니까? 내가 할 때마다, 그것은 틀린 느낌입니다. 예를 들어Java Map : 값 객체의 속성을 키로 사용합니까?
: 그것은 종류의 잘못된 느낌
Foo foo = new Foo();
foo.name = "foo bar";
foo.bar = "blaaaa";
Map<String, Foo> foos = new HashMap<>();
foos.add(foo.name, foo);
:
class Foo {
String name;
String bar;
}
그리고이 같은지도를 사용합니다.
이것은 'Map' - 인덱스 검색의 가장 일반적인 용도 중 하나입니다. 여기에는 문제가 없습니다. 'Foo'가 변경 가능하다면'Foo'가 바뀌면 색인이 잘못 될 것입니다. –
우려되는 사항이 메모리 낭비라면,'String' 키의 특별한 경우에 풀을 이용할 수 있습니다 ('String.intern' 문서 참조). – Dici
경우에 따라 클래스 대신 열거 형을 사용하여 동일한 사용 사례를 달성 할 수 있지만 더 좋거나 불변 인 경우가 있습니다. 그렇다면 예를 들어 뭔가가 HashMap 대신에 HashSet에 있는지 검사 할 수 있습니다.이 HashMap은 특정 관심사를 제거합니다 (그러나 걱정할 필요는 없습니다). –