# Class: com.pnfsoftware.jeb.util.collect.SynchronizedLinkedMap

A serializable, inefficient, fully synchronized, linked pseudo\-map. The insertion order is maintained. 

 "Pseudo" because this class does not implement the map interface, for the primary reason that iterators on keys/values/items would not abide by the contract requested by [Map](Map) \(mostly, that modifying the entries while iterating also modifies the backing map\). Note that this class offers a [#copyOfKeys()](#copyOfKeys()) method which can safely be used to iterate the keys of the map at the time that method was executed. Modifying that set does not impact the map itself. Unlike synchronized maps provided by [Collections](Collections#synchronizedMap(Map)), there is no need to synchronize when iterating over the collection returned by [#copyOfKeys()](#copyOfKeys()). 

 Similarly to [ConcurrentHashMap](ConcurrentHashMap) \(but unlike [LinkedHashMap](LinkedHashMap)\), this class does not allow null key or null value. 

 Methods of this object are guaranteed to never raise [ConcurrentModificationException](ConcurrentModificationException).

## Constructor: SynchronizedLinkedMap

Description: Create an empty synchronized linked map.

## Method: clear

Description: Remove all mappings.

## Method: containsKey
- parameter: `key`, type: `K`
- return type: `boolean`

Description: 
parameter: key: key
return: true if the key is present

## Method: containsValue
- parameter: `value`, type: `V`
- return type: `boolean`

Description: 
parameter: value: value
return: true if the value is present

## Method: copyOfKeys
- return type: `java.util.Set<K>`

Description: Copy the current keys.
return: copy of the key set

## Method: copyOfValues
- return type: `java.util.List<V>`

Description: Copy the current values.
return: copy of the values

## Method: firstKey
- return type: `K`

Description: 
return: first key in insertion order
throws: if the map is empty

## Method: get
- parameter: `key`, type: `K`
- return type: `V`

Description: 
parameter: key: key
return: value associated with the key, or null

## Method: isEmpty
- return type: `boolean`

Description: 
return: true if no mapping exists

## Method: put
- parameter: `key`, type: `K`
- parameter: `value`, type: `V`
- return type: `V`

Description: Add or replace a mapping.
parameter: key: non\-null key
parameter: value: non\-null value
return: previous value, or null

## Method: remove
- parameter: `key`, type: `K`
- return type: `V`

Description: Remove a mapping.
parameter: key: key
return: removed value, or null

## Method: size
- return type: `int`

Description: 
return: number of mappings

## Method: toString
- return type: `java.lang.String`


