program tip

Java Collections singletonMap 메소드는 언제 사용합니까?

radiobox 2020. 10. 19. 07:54
반응형

Java Collections singletonMap 메소드는 언제 사용합니까?


Java Collections singletonMap 이 필요한 이유를 이해할 수 없습니까? 다중 스레드 응용 프로그램에서 유용합니까?


기본적으로 다음을 수행 할 수 있습니다.

callAPIThatTakesAMap(Collections.singletonMap(key, value));

이보다는 :

Map<KeyType, ValueType> m = new HashMap<KeyType, ValueType>();
m.put(key, value);
callAPIThatTakesAMap(m);

단일 키 / 값 쌍만있을 때 훨씬 더 좋습니다. 이러한 상황은 아마 매우 자주 발생하지 않지만, singleton()그리고 singletonList()매우 자주 유용 할 수 있습니다.


(매개 변수로 또는 메소드의 결과로) 일부 일반 코드에 맵을 전달해야하고이 특정 경우에-그러나 동일한 일반에 맵을 전달하는 다른 경우에는 아님을 알고있는 경우 유용합니다. 코드-전달하려는지도에는 키가 하나만 있습니다. 이 경우 SingletonMap은 본격적인지도 구현보다 더 효율적이며, 말해야하는 모든 것을 생성자에서 말할 수 있기 때문에 프로그래머에게 더 편리합니다.


또한 Collections.singletonMap ()에 의해 반환 된 SingletonMap 구현은 일반 HashMap보다 메모리 공간이 더 작습니다. 키와 값이라는 두 개의 멤버 필드 만 포함하면되는 반면 HashMap은 Node 개체와 다른 멤버 필드의 내부 배열을 유지합니다. 따라서 메모리에 이러한 맵을 많이 생성하는 경우 Collections.singletonMap ()을 사용하는 것이 현명한 선택입니다.


주로 편의성과 추상화를위한 것입니다. 일부 API는를 Collection인수로 사용하며 객체를 Set또는 .NET으로 변환하는 간단한 방법을 갖는 것이 좋습니다 Map.

singletonMap()그리고 singletonList()이후에 실제로 도입 된 singletonSet()자바 1.3에 있기 때문에이 singletonSet()유용하다는 것을 증명했다.


많은 답변이 언제 알려졌지만 언제 not use it

원하는 경우 사용하지 마십시오put items later on .

의 구현을 넣어서 singletonMap던져UnsupportedOperationException


이것은 또 다른 예이지만 다음 코드 줄을 작성했습니다.

@Override public Map<Action, Promise<Boolean>> actOnResults() throws Exception {
    return Collections.singletonMap(Action.UPDATE_DATABASE, saver.save(results));
}

주의 @Override. 인터페이스는 더 일반적으로 많은 것들의 맵을 취할 수 있습니다. 이 특정 인스턴스화는 항상 한 가지를 포함하는 맵을 반환합니다. 또한 맵의 키는 Enum입니다. 따라서 맵은 절대 크지 않아야하며 지정된 작업의 결과를 포함하기 만하면됩니다. 내 실제 예제에는 최대 5 개의 작업이 있으며이 인스턴스화는 그중 하나만 사용합니다.

완전 EnumSet하거나 EnumMap종종 이러한 경우에 적절하지만 위의 코드에 비해 여전히 성가신 장황합니다.

참고 URL : https://stackoverflow.com/questions/7125536/when-would-i-use-java-collections-singletonmap-method

반응형