I do not understand why my values keep getting switched. I think it assigns the value of the first input value box to the first item added and the value fields are not in order of the objects. <apex:outputPanel id="OutputBox"> <apex:inputText value="{!...}" rendered="{!OR(contains(...), contains(...))}"> </apex:inputText> <apex:inputCheckbox value="{!...}" rendered="{!contains(...)}"> </apex:inputCheckbox> <apex:SelectList rendered="{!contains(...)}" size="1" value="{!...}"> <apex:SelectOptions value="{!picklist}" /> </apex:SelectList> </apex:outputPanel> // Sample Output First Save Name Value Object2 55 // Added Second datatype: String Object1 33 //Added First datatype: String Output after save button is clicked again with no change, values get switched. Object2 33 // Added Second datatype: String Object1 55 //Added First datatype: String // Object are stored in a Map which is changed to a list using map.value() for displaying: