나는 HashMap<Foo,ArrayList<Bar>>
을 가지고 있는데, ArrayList
이 키와 연결될 때 그 값을 추가하려고합니다.메서드의 삼항 연산자 실행
삼항 연산자는
하게 내가 현재 키 푸에 연관된 값이 null 인 경우 그 다음 새로운 ArrayList에 내가 그것을 원하는 것을 추가하고로 그것을 다시 넣어 경우, 확인하고 있습니다하고 있어요 지도. 그렇지 않다면 arrayList를 저장하여 원하는 곳에 추가하고 다시 map에 다시 넣습니다.ArrayList<Bar> valuesList = map.get(key);
if(valuesList == null){
valuesList = new ArrayList<Bar>;
}
valuesList.add(Item);
map.put(Foo,valuesList);
하지만 조금 짧은 내 코드를 확인하기 위해 삼항 연산자를 사용하여 선호 :
나는 이런 식으로 그것을 할 수
내 질문은ArrayList<Bar> valuesList= (map.get(key) == null) ? new ArrayList<Bar>() : map.get(key);
valuesList.add(Item);
map.put(Foo,valuesList);
, (두 번째)에 예 두 번 map.get(key)
을 실행합니까? 아니면 자바 컴파일러가 똑똑하고 단 한 번만 평가합니까? (실행 속도 측면에서 보면 약간의 차이가 있음을 알고 있지만 예제 1을 사용하기 시작한 이유는 충분합니다.)
사용 구아바 multimap은 대신 : https://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained#Multimap 당신이'은 javap를 사용하여 바이트 코드를 조사 할 수 – eiden
-c com.mypackage.MyClass'를 사용하면 어떤 일이 일어나는지 볼 수 있습니다. – wvdz
그래서'map.get (key)'의 결과에 임시 변수를 사용하는 대신 선호하는 삼항 연산자 대신 첫 번째 코드를 사용하는 것이 더 낫습니까? – Tom