Как уже говорили несколько человек, вы, вероятно, не хотите этого делать.
Но: если вы действительно хотите сделать это, как упражнение в переносе объектов Java, с полным пренебрежением к эффективности и хорошей практике программирования, вот способ, который максимально приближен к тому, что вы написали в вопросе. *
import java.util.*;
public class CrazySort {
public static void main(String[] args) {
List<String> list = Arrays.asList(new String[] {"name1","10","name2","2","name3","15","name4","7"});
crazySort(list);
System.out.println(list);
}
private static class StringPair implements Comparable<StringPair> {
String s1, s2;
StringPair(String p1, String p2) { s1 = p1; s2 = p2; }
public int compareTo(StringPair o) { return Integer.parseInt(o.s2) - Integer.parseInt(s2); }
}
static void crazySort(final List<String> list) {
List<StringPair> wrapper = new AbstractList<StringPair>() {
public StringPair get(int i) { return new StringPair(list.get(i*2), list.get(i*2+1)); }
public StringPair set(int i, StringPair p) {
StringPair r = get(i);
list.set(i*2, p.s1);
list.set(i*2+1, p.s2);
return r;
}
public int size() { return list.size() / 2; }
};
Collections.sort(wrapper);
}
}