<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.4.2_08) on Sat Apr 22 18:56:44 PDT 2006 -->
<TITLE>
SequencedHashMap (Axis API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.axis.collections.SequencedHashMap class">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="SequencedHashMap (Axis API)";
}
</SCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/SequencedHashMap.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/axis/collections/LRUMap.html" title="class in org.apache.axis.collections"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="SequencedHashMap.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.axis.collections</FONT>
<BR>
Class SequencedHashMap</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>org.apache.axis.collections.SequencedHashMap</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, java.io.Externalizable, java.util.Map, java.io.Serializable</DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../org/apache/axis/collections/LRUMap.html" title="class in org.apache.axis.collections">LRUMap</A></DD>
</DL>
<HR>
<DL>
<DT>public class <B>SequencedHashMap</B><DT>extends java.lang.Object<DT>implements java.util.Map, java.lang.Cloneable, java.io.Externalizable</DL>

<P>
A map of objects whose mapping entries are sequenced based on the order in
  which they were added.  This data structure has fast <i>O(1)</i> search
  time, deletion time, and insertion time.

  <p>Although this map is sequenced, it cannot implement <CODE>List</CODE> because of incompatible interface definitions.  The remove
  methods in List and Map have different return values (see: <CODE>List.remove(Object)</CODE> and <CODE>Map.remove(Object)</CODE>).

  <p>This class is not thread safe.  When a thread safe implementation is
  required, use <CODE>Collections.synchronizedMap(Map)</CODE> as it is documented,
  or use explicit synchronization controls.
<P>

<P>
<DL>
<DT><B>Since:</B></DT>
  <DD>Commons Collections 2.0</DD>
<DT><B>Author:</B></DT>
  <DD><a href="mailto:mas@apache.org">Michael A. Smith</A>, <a href="mailto:dlr@collab.net">Daniel Rall</a>, <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>, Stephen Colebourne</DD>
<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#org.apache.axis.collections.SequencedHashMap">Serialized Form</A></DL>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#SequencedHashMap()">SequencedHashMap</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a new sequenced hash map with default initial size and load
  factor.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#SequencedHashMap(int)">SequencedHashMap</A></B>(int&nbsp;initialSize)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a new sequenced hash map with the specified initial size and
  default load factor.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#SequencedHashMap(int, float)">SequencedHashMap</A></B>(int&nbsp;initialSize,
                 float&nbsp;loadFactor)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a new sequenced hash map with the specified initial size and
  load factor.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#SequencedHashMap(java.util.Map)">SequencedHashMap</A></B>(java.util.Map&nbsp;m)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a new sequenced hash map and add all the elements in the
  specified map.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#clear()">clear</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.clear()</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#clone()">clone</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a shallow copy of this object, preserving the internal structure
 by copying only references.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#containsKey(java.lang.Object)">containsKey</A></B>(java.lang.Object&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.containsKey(Object)</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#containsValue(java.lang.Object)">containsValue</A></B>(java.lang.Object&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.containsValue(Object)</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Set</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#entrySet()">entrySet</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.entrySet()</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#equals(java.lang.Object)">equals</A></B>(java.lang.Object&nbsp;obj)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.equals(Object)</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#get(int)">get</A></B>(int&nbsp;index)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the key at the specified index.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#get(java.lang.Object)">get</A></B>(java.lang.Object&nbsp;o)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.get(Object)</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Map.Entry</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#getFirst()">getFirst</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the entry for the "oldest" mapping.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#getFirstKey()">getFirstKey</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the key for the "oldest" mapping.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#getFirstValue()">getFirstValue</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the value for the "oldest" mapping.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Map.Entry</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#getLast()">getLast</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the entry for the "newest" mapping.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#getLastKey()">getLastKey</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the key for the "newest" mapping.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#getLastValue()">getLastValue</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the value for the "newest" mapping.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#getValue(int)">getValue</A></B>(int&nbsp;index)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the value at the specified index.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#hashCode()">hashCode</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.hashCode()</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#indexOf(java.lang.Object)">indexOf</A></B>(java.lang.Object&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the index of the specified key.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#isEmpty()">isEmpty</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.isEmpty()</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#iterator()">iterator</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets an iterator over the keys.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Set</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#keySet()">keySet</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.keySet()</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#lastIndexOf(java.lang.Object)">lastIndexOf</A></B>(java.lang.Object&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the last index of the specified key.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#put(java.lang.Object, java.lang.Object)">put</A></B>(java.lang.Object&nbsp;key,
    java.lang.Object&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.put(Object, Object)</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#putAll(java.util.Map)">putAll</A></B>(java.util.Map&nbsp;t)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds all the mappings in the specified map to this map, replacing any
  mappings that already exist (as per <CODE>Map.putAll(Map)</CODE>).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#readExternal(java.io.ObjectInput)">readExternal</A></B>(java.io.ObjectInput&nbsp;in)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Deserializes this map from the given stream.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#remove(int)">remove</A></B>(int&nbsp;index)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes the element at the specified index.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#remove(java.lang.Object)">remove</A></B>(java.lang.Object&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.remove(Object)</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.List</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#sequence()">sequence</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a List view of the keys rather than a set view.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#size()">size</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.size()</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#toString()">toString</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Provides a string representation of the entries within the map.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#values()">values</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements <CODE>Map.values()</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#writeExternal(java.io.ObjectOutput)">writeExternal</A></B>(java.io.ObjectOutput&nbsp;out)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Serializes this map to the given stream.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class java.lang.Object</B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>finalize, getClass, notify, notifyAll, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->


<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="SequencedHashMap()"><!-- --></A><H3>
SequencedHashMap</H3>
<PRE>
public <B>SequencedHashMap</B>()</PRE>
<DL>
<DD>Construct a new sequenced hash map with default initial size and load
  factor.
<P>
</DL>
<HR>

<A NAME="SequencedHashMap(int)"><!-- --></A><H3>
SequencedHashMap</H3>
<PRE>
public <B>SequencedHashMap</B>(int&nbsp;initialSize)</PRE>
<DL>
<DD>Construct a new sequenced hash map with the specified initial size and
  default load factor.
<P>
<DT><B>Parameters:</B><DD><CODE>initialSize</CODE> - the initial size for the hash table<DT><B>See Also:</B><DD><CODE>HashMap.HashMap(int)</CODE></DL>
<HR>

<A NAME="SequencedHashMap(int, float)"><!-- --></A><H3>
SequencedHashMap</H3>
<PRE>
public <B>SequencedHashMap</B>(int&nbsp;initialSize,
                        float&nbsp;loadFactor)</PRE>
<DL>
<DD>Construct a new sequenced hash map with the specified initial size and
  load factor.
<P>
<DT><B>Parameters:</B><DD><CODE>initialSize</CODE> - the initial size for the hash table<DD><CODE>loadFactor</CODE> - the load factor for the hash table.<DT><B>See Also:</B><DD><CODE>HashMap.HashMap(int,float)</CODE></DL>
<HR>

<A NAME="SequencedHashMap(java.util.Map)"><!-- --></A><H3>
SequencedHashMap</H3>
<PRE>
public <B>SequencedHashMap</B>(java.util.Map&nbsp;m)</PRE>
<DL>
<DD>Construct a new sequenced hash map and add all the elements in the
  specified map.  The order in which the mappings in the specified map are
  added is defined by <A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#putAll(java.util.Map)"><CODE>putAll(Map)</CODE></A>.
<P>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Method Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="size()"><!-- --></A><H3>
size</H3>
<PRE>
public int <B>size</B>()</PRE>
<DL>
<DD>Implements <CODE>Map.size()</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>size</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="isEmpty()"><!-- --></A><H3>
isEmpty</H3>
<PRE>
public boolean <B>isEmpty</B>()</PRE>
<DL>
<DD>Implements <CODE>Map.isEmpty()</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>isEmpty</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="containsKey(java.lang.Object)"><!-- --></A><H3>
containsKey</H3>
<PRE>
public boolean <B>containsKey</B>(java.lang.Object&nbsp;key)</PRE>
<DL>
<DD>Implements <CODE>Map.containsKey(Object)</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>containsKey</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="containsValue(java.lang.Object)"><!-- --></A><H3>
containsValue</H3>
<PRE>
public boolean <B>containsValue</B>(java.lang.Object&nbsp;value)</PRE>
<DL>
<DD>Implements <CODE>Map.containsValue(Object)</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>containsValue</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="get(java.lang.Object)"><!-- --></A><H3>
get</H3>
<PRE>
public java.lang.Object <B>get</B>(java.lang.Object&nbsp;o)</PRE>
<DL>
<DD>Implements <CODE>Map.get(Object)</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>get</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getFirst()"><!-- --></A><H3>
getFirst</H3>
<PRE>
public java.util.Map.Entry <B>getFirst</B>()</PRE>
<DL>
<DD>Return the entry for the "oldest" mapping.  That is, return the Map.Entry
  for the key-value pair that was first put into the map when compared to
  all the other pairings in the map.  This behavior is equivalent to using
  <code>entrySet().iterator().next()</code>, but this method provides an
  optimized implementation.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The first entry in the sequence, or <code>null</code> if the
  map is empty.</DL>
</DD>
</DL>
<HR>

<A NAME="getFirstKey()"><!-- --></A><H3>
getFirstKey</H3>
<PRE>
public java.lang.Object <B>getFirstKey</B>()</PRE>
<DL>
<DD>Return the key for the "oldest" mapping.  That is, return the key for the
  mapping that was first put into the map when compared to all the other
  objects in the map.  This behavior is equivalent to using
  <code>getFirst().getKey()</code>, but this method provides a slightly
  optimized implementation.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The first key in the sequence, or <code>null</code> if the
  map is empty.</DL>
</DD>
</DL>
<HR>

<A NAME="getFirstValue()"><!-- --></A><H3>
getFirstValue</H3>
<PRE>
public java.lang.Object <B>getFirstValue</B>()</PRE>
<DL>
<DD>Return the value for the "oldest" mapping.  That is, return the value for
  the mapping that was first put into the map when compared to all the
  other objects in the map.  This behavior is equivalent to using
  <code>getFirst().getValue()</code>, but this method provides a slightly
  optimized implementation.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The first value in the sequence, or <code>null</code> if the
  map is empty.</DL>
</DD>
</DL>
<HR>

<A NAME="getLast()"><!-- --></A><H3>
getLast</H3>
<PRE>
public java.util.Map.Entry <B>getLast</B>()</PRE>
<DL>
<DD>Return the entry for the "newest" mapping.  That is, return the Map.Entry
  for the key-value pair that was first put into the map when compared to
  all the other pairings in the map.  The behavior is equivalent to:

  <pre>
    Object obj = null;
    Iterator iter = entrySet().iterator();
    while(iter.hasNext()) {
      obj = iter.next();
    }
    return (Map.Entry)obj;
  </pre>

  However, the implementation of this method ensures an O(1) lookup of the
  last key rather than O(n).
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The last entry in the sequence, or <code>null</code> if the map
  is empty.</DL>
</DD>
</DL>
<HR>

<A NAME="getLastKey()"><!-- --></A><H3>
getLastKey</H3>
<PRE>
public java.lang.Object <B>getLastKey</B>()</PRE>
<DL>
<DD>Return the key for the "newest" mapping.  That is, return the key for the
  mapping that was last put into the map when compared to all the other
  objects in the map.  This behavior is equivalent to using
  <code>getLast().getKey()</code>, but this method provides a slightly
  optimized implementation.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The last key in the sequence, or <code>null</code> if the map is
  empty.</DL>
</DD>
</DL>
<HR>

<A NAME="getLastValue()"><!-- --></A><H3>
getLastValue</H3>
<PRE>
public java.lang.Object <B>getLastValue</B>()</PRE>
<DL>
<DD>Return the value for the "newest" mapping.  That is, return the value for
  the mapping that was last put into the map when compared to all the other
  objects in the map.  This behavior is equivalent to using
  <code>getLast().getValue()</code>, but this method provides a slightly
  optimized implementation.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The last value in the sequence, or <code>null</code> if the map
  is empty.</DL>
</DD>
</DL>
<HR>

<A NAME="put(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
put</H3>
<PRE>
public java.lang.Object <B>put</B>(java.lang.Object&nbsp;key,
                            java.lang.Object&nbsp;value)</PRE>
<DL>
<DD>Implements <CODE>Map.put(Object, Object)</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>put</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="remove(java.lang.Object)"><!-- --></A><H3>
remove</H3>
<PRE>
public java.lang.Object <B>remove</B>(java.lang.Object&nbsp;key)</PRE>
<DL>
<DD>Implements <CODE>Map.remove(Object)</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>remove</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="putAll(java.util.Map)"><!-- --></A><H3>
putAll</H3>
<PRE>
public void <B>putAll</B>(java.util.Map&nbsp;t)</PRE>
<DL>
<DD>Adds all the mappings in the specified map to this map, replacing any
  mappings that already exist (as per <CODE>Map.putAll(Map)</CODE>).  The order
  in which the entries are added is determined by the iterator returned
  from <CODE>Map.entrySet()</CODE> for the specified map.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>putAll</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>t</CODE> - the mappings that should be added to this map.
<DT><B>Throws:</B>
<DD><CODE>java.lang.NullPointerException</CODE> - if <code>t</code> is <code>null</code></DL>
</DD>
</DL>
<HR>

<A NAME="clear()"><!-- --></A><H3>
clear</H3>
<PRE>
public void <B>clear</B>()</PRE>
<DL>
<DD>Implements <CODE>Map.clear()</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>clear</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
equals</H3>
<PRE>
public boolean <B>equals</B>(java.lang.Object&nbsp;obj)</PRE>
<DL>
<DD>Implements <CODE>Map.equals(Object)</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>equals</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="hashCode()"><!-- --></A><H3>
hashCode</H3>
<PRE>
public int <B>hashCode</B>()</PRE>
<DL>
<DD>Implements <CODE>Map.hashCode()</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>hashCode</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
public java.lang.String <B>toString</B>()</PRE>
<DL>
<DD>Provides a string representation of the entries within the map.  The
  format of the returned string may change with different releases, so this
  method is suitable for debugging purposes only.  If a specific format is
  required, use <A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#entrySet()"><CODE>entrySet()</CODE></A>.<CODE>iterator()</CODE> and
  iterate over the entries in the map formatting them as appropriate.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="keySet()"><!-- --></A><H3>
keySet</H3>
<PRE>
public java.util.Set <B>keySet</B>()</PRE>
<DL>
<DD>Implements <CODE>Map.keySet()</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>keySet</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="values()"><!-- --></A><H3>
values</H3>
<PRE>
public java.util.Collection <B>values</B>()</PRE>
<DL>
<DD>Implements <CODE>Map.values()</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>values</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="entrySet()"><!-- --></A><H3>
entrySet</H3>
<PRE>
public java.util.Set <B>entrySet</B>()</PRE>
<DL>
<DD>Implements <CODE>Map.entrySet()</CODE>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>entrySet</CODE> in interface <CODE>java.util.Map</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="clone()"><!-- --></A><H3>
clone</H3>
<PRE>
public java.lang.Object <B>clone</B>()
                       throws java.lang.CloneNotSupportedException</PRE>
<DL>
<DD>Creates a shallow copy of this object, preserving the internal structure
 by copying only references.  The keys and values themselves are not
 <code>clone()</code>'d.  The cloned object maintains the same sequence.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>A clone of this instance.
<DT><B>Throws:</B>
<DD><CODE>java.lang.CloneNotSupportedException</CODE> - if clone is not supported by a
 subclass.</DL>
</DD>
</DL>
<HR>

<A NAME="get(int)"><!-- --></A><H3>
get</H3>
<PRE>
public java.lang.Object <B>get</B>(int&nbsp;index)</PRE>
<DL>
<DD>Gets the key at the specified index.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>index</CODE> - the index to retrieve
<DT><B>Returns:</B><DD>the key at the specified index, or null
<DT><B>Throws:</B>
<DD><CODE>java.lang.ArrayIndexOutOfBoundsException</CODE> - if the <code>index</code> is
  <code>&lt; 0</code> or <code>&gt;</code> the size of the map.</DL>
</DD>
</DL>
<HR>

<A NAME="getValue(int)"><!-- --></A><H3>
getValue</H3>
<PRE>
public java.lang.Object <B>getValue</B>(int&nbsp;index)</PRE>
<DL>
<DD>Gets the value at the specified index.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>index</CODE> - the index to retrieve
<DT><B>Returns:</B><DD>the value at the specified index, or null
<DT><B>Throws:</B>
<DD><CODE>java.lang.ArrayIndexOutOfBoundsException</CODE> - if the <code>index</code> is
  <code>&lt; 0</code> or <code>&gt;</code> the size of the map.</DL>
</DD>
</DL>
<HR>

<A NAME="indexOf(java.lang.Object)"><!-- --></A><H3>
indexOf</H3>
<PRE>
public int <B>indexOf</B>(java.lang.Object&nbsp;key)</PRE>
<DL>
<DD>Gets the index of the specified key.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - the key to find the index of
<DT><B>Returns:</B><DD>the index, or -1 if not found</DL>
</DD>
</DL>
<HR>

<A NAME="iterator()"><!-- --></A><H3>
iterator</H3>
<PRE>
public java.util.Iterator <B>iterator</B>()</PRE>
<DL>
<DD>Gets an iterator over the keys.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>an iterator over the keys</DL>
</DD>
</DL>
<HR>

<A NAME="lastIndexOf(java.lang.Object)"><!-- --></A><H3>
lastIndexOf</H3>
<PRE>
public int <B>lastIndexOf</B>(java.lang.Object&nbsp;key)</PRE>
<DL>
<DD>Gets the last index of the specified key.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - the key to find the index of
<DT><B>Returns:</B><DD>the index, or -1 if not found</DL>
</DD>
</DL>
<HR>

<A NAME="sequence()"><!-- --></A><H3>
sequence</H3>
<PRE>
public java.util.List <B>sequence</B>()</PRE>
<DL>
<DD>Returns a List view of the keys rather than a set view.  The returned
 list is unmodifiable.  This is required because changes to the values of
 the list (using <CODE>ListIterator.set(Object)</CODE>) will
 effectively remove the value from the list and reinsert that value at
 the end of the list, which is an unexpected side effect of changing the
 value of a list.  This occurs because changing the key, changes when the
 mapping is added to the map and thus where it appears in the list.

 <p>An alternative to this method is to use <A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#keySet()"><CODE>keySet()</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The ordered list of keys.<DT><B>See Also:</B><DD><A HREF="../../../../org/apache/axis/collections/SequencedHashMap.html#keySet()"><CODE>keySet()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="remove(int)"><!-- --></A><H3>
remove</H3>
<PRE>
public java.lang.Object <B>remove</B>(int&nbsp;index)</PRE>
<DL>
<DD>Removes the element at the specified index.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>index</CODE> - The index of the object to remove.
<DT><B>Returns:</B><DD>The previous value coressponding the <code>key</code>, or
              <code>null</code> if none existed.
<DT><B>Throws:</B>
<DD><CODE>java.lang.ArrayIndexOutOfBoundsException</CODE> - if the <code>index</code> is
 <code>&lt; 0</code> or <code>&gt;</code> the size of the map.</DL>
</DD>
</DL>
<HR>

<A NAME="readExternal(java.io.ObjectInput)"><!-- --></A><H3>
readExternal</H3>
<PRE>
public void <B>readExternal</B>(java.io.ObjectInput&nbsp;in)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException</PRE>
<DL>
<DD>Deserializes this map from the given stream.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>readExternal</CODE> in interface <CODE>java.io.Externalizable</CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>in</CODE> - the stream to deserialize from
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE> - if the stream raises it
<DD><CODE>java.lang.ClassNotFoundException</CODE> - if the stream raises it</DL>
</DD>
</DL>
<HR>

<A NAME="writeExternal(java.io.ObjectOutput)"><!-- --></A><H3>
writeExternal</H3>
<PRE>
public void <B>writeExternal</B>(java.io.ObjectOutput&nbsp;out)
                   throws java.io.IOException</PRE>
<DL>
<DD>Serializes this map to the given stream.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>writeExternal</CODE> in interface <CODE>java.io.Externalizable</CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>out</CODE> - the stream to serialize to
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE> - if the stream raises it</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/SequencedHashMap.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/axis/collections/LRUMap.html" title="class in org.apache.axis.collections"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="SequencedHashMap.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright © 2005 Apache Web Services Project. All Rights Reserved.
</BODY>
</HTML>
