Purtroppo devo dirti che ci sono cose poco sensate nel codice che hai scritto.
Ad esempio perché hai messo anche j come String? j serve solo per tenere traccia di una posizione, quindi è un int a prescindere dal tipo di dato che devi ordinare. Poi ovviamente non ha senso il j.compareTo.
Inoltre while j=0...... ?
Facciamo così: prova a guardare la soluzione e soprattutto prova a capire perché trovavi difficoltà.
public void insertionSort() {
String tmp; // questo cambia!
int j; // questo NO!
for(int i=1; i<list.size(); i++) {
j=i-1;
tmp = list.get(i);
while(j >= 0 && list.get(j).compareTo(tmp) > 0) {
// "scorrimento"
list.set(j+1, list.get(j));
j--;
}
// inserimento
list.set(j+1, tmp);
}
}