src/main/java/org/jivesoftware/smack/util/collections/AbstractHashedMap.java
protected void doReadObject(ObjectInputStream in) throws IOException,
            ClassNotFoundException {
        loadFactor = in.readFloat();
        int capacity = in.readInt();
        int size = in.readInt();
        init();
        data = new HashEntry[capacity];
        for (int i = 0; i < size; i++) {
            K key = (K) in.readObject();
            V value = (V) in.readObject();
            put(key, value);
        }
        threshold = calculateThreshold(data.length, loadFactor);
    }
protected void doReadObject(ObjectInputStream in) throws IOException,
            ClassNotFoundException {
        loadFactor = in.readFloat();
        int capacity = in.readInt();
        int size = in.readInt();
        init();
        data = new HashEntry[capacity];
        for (int i = 0; i < size; i++) {
            K key = (K) in.readObject();
            V value = (V) in.readObject();
            put(key, value);
        }
        threshold = calculateThreshold(data.length, loadFactor);
    }
protected void doReadObject ( ObjectInputStream in ) throws IOException , ClassNotFoundException { loadFactor = in . readFloat ( ) ; int capacity = in . readInt ( ) ; int size = in . readInt ( ) ; init ( ) ; data = new HashEntry [ capacity ] ; for ( int i = 0 ; i < size ; i ++ ) { K key = ( K ) in . readObject ( ) ; V value = ( V ) in . readObject ( ) ; put ( key , value ) ; } threshold = calculateThreshold ( data . length , loadFactor ) ; }
Reads the map data from the stream. This method must be overridden if a
subclass must be setup before <code>put()</code> is used.
<p/>
Serialization is not one of the JDK's nicest topics. Normal serialization
will initialise the superclass before the subclass. Sometimes however,
this isn't what you want, as in this case the <code>put()</code> method
on read can be affected by subclass state.
<p/>
The solution adopted here is to deserialize the state data of this class
in this protected method. This method must be called by the
<code>readObject()</code> of the first serializable subclass.
<p/>
Subclasses may override if the subclass has a specific field that must be
present before <code>put()</code> or <code>calculateThreshold()</code>
will work correctly.

@param in
the input stream
Reads the map data from the stream . This method must be overridden if a subclass must be setup before <code > put () < / code > is used . <p / > Serialization is not one of the JDK s nicest topics . Normal serialization will initialise the superclass before the subclass . Sometimes however this isn t what you want as in this case the <code > put () < / code > method on read can be affected by subclass state . <p / > The solution adopted here is to deserialize the state data of this class in this protected method . This method must be called by the <code > readObject () < / code > of the first serializable subclass . <p / > Subclasses may override if the subclass has a specific field that must be present before <code > put () < / code > or <code > calculateThreshold () < / code > will work correctly .