Different between list.add and list.set

1.List .add:  it insert an element in the list on specified index
2.List .set:  it overrides/replaces an element in the list on specified index

/***********List.add****************/
List<String> lstString=new List<String>{'A','B','C','D'};

System.debug('List elements='+lstString.add(2,'F'));
O/P= List elements={'A','B','F','C','D'}
/***********************************/

/***********List.set****************/
List<String> lstString=new List<String>{'A','B','C','D'};

System.debug('List elements='+lstString.set(2,'F'));
O/P= List elements={'A','B','F','D'}
/***********************************/

Counters