У меня есть массив строк: 15 МБ, 12 МБ, 1 ТБ, 1 ГБ. Я хочу сравнить их лексикографически, просто следуя правилу, что МБ меньше, чем ГБ и ТБ.
Итак, в конце я хочу получить: 12 МБ, 15 МБ, 1 ГБ, 1 ТБ. Я нашел способ сравнить буквы:
final static String ORDER="MGT";
public int compare(String o1, String o2) {
int pos1 = 0;
int pos2 = 0;
for (int i = 0; i < Math.min(o1.length(), o2.length()) && pos1 == pos2; i++) {
pos1 = ORDER.indexOf(o1.charAt(i));
pos2 = ORDER.indexOf(o2.charAt(i));
}
if (pos1 == pos2 && o1.length() != o2.length()) {
return o1.length() - o2.length();
}
return pos1 - pos2 ;
}
Я думаю о том, чтобы разбить строку по номерам и буквам, но как мне отсортировать их по буквам "МБ ...", а затем по их номерам. Я использую два компаратора или что-то еще?