[SalesForce] Adding values to list

I have list which hold records of an object "XYZ"

I have an id of a record of "XYZ" object which should display in list[0] and remaining records next

I am displaying the records using wrapper class.

how would i add the matched record to list of zero

I am adding the records to wrapper class in following way

wrapperlist(v,g,xyz);

where v and xyz are objects and g is list of string

      if(xyz.id==r){
         if(WrapperList.isEmpty()){
          WrapperList.set(0,new VWrappers(v,G,xyz));
         }
        }else {   
       WrapperList.add(new VWrappers(v,G,xyz));
        }

but this would remove and replace it, The initial list[0] is lost

============================================================================

I am using standard set controller for pagination

con = new ApexPages.StandardSetController(Database.query(query));

I am passing the records to a wrapper class and displaying the records on the vf page

I want the replace replace the list[0] so that i can display records of my choice intially

Best Answer

You can use a combination of list methods.

//start context
list<string> lst= new list<string>{'aa','bb','cc','dd'};
string var = 'cc';

//find the index of var
integer index; 
for(integer i =0;i< lst.size();i++){
 if(var==lst[i]) index=i;
}
//may want to throw an exception if index is still null

list<string> tempLst = lst.clone();//backup your collection
lst.clear(); //empty your collection

lst.add(tempLst[index]); //retrieve your desired record and put it on index 0
tempLst.remove(index); //remove your record from the old collection
lst.addAll(tempLst); //add the other data to your list 

system.debug(lst); /// |USER_DEBUG|[22]|DEBUG|(cc, aa, bb, dd)

But, logic like this might imply you should consider exploring the apex map collection type and its methods. Know you can use the map.values() property to still reference it as a list, or can directly iterate over a map in Visualforce too.