Java Reference
In-Depth Information
tions.synchronizedMap(new HashMap<String, In-
teger>());
. Query operations on the returned map “read through” to the
specifiedmap,andattemptstomodifythereturnedmap,whetherdirectorvia
its collection views, result in an
UnsupportedOperationException
.
Note
For performance reasons, collections implementations are unsynchron-
ized—unsynchronized collections have better performance than synchronized collec-
tions.Touseacollectioninamultithreadedcontext,however,youneedtoobtainasyn-
chronizedversionofthatcollection.Youobtainthatversionbycallingamethodsuch
as
synchronizedSet()
.
You might be wondering about the purpose for the various “
empty
” class methods
in the
Collections
class. For example,
static final <T> List<T>
emptyList()
returnsanimmutableemptylist,asin
List<String> ls = Col-
lections.emptyList();
.Thesemethodsarepresentbecausetheyofferauseful
alternative to returning null (and avoiding potential
NullPointerException
s) in
certain contexts. Consider
Listing 5-26
.
Listing 5-26.
Empty and nonempty
List
s of
Bird
s
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
class Birds
{
private List<String> birds;
Birds()
{
birds = Collections.emptyList();
}
Birds(String... birdNames)
{
birds = new ArrayList<String>();
for (String birdName: birdNames)
birds.add(birdName);
}