import java.util.ArrayList;
import java.util.Collections;
class Main {
public static void main(String[] args) {
System.out.println("Hello world! - java.jsrun.net ");
Main main = new Main();
ArrayList<String> sortedList = new ArrayList<>();
sortedList.add("1A");
sortedList.add("33-2");
sortedList.add("331");
sortedList.add(null);
sortedList.add("Bb");
sortedList.add("D1");
Collections.sort(sortedList, (vo1, vo2) -> {
String s1 = main.processSequenceNo(vo1);
String s2 = main.processSequenceNo(vo2);
return s1.compareTo(s2);
});
System.out.println(sortedList);
}
private String processSequenceNo(String sequenceNo) {
if ("".equals(sequenceNo) || sequenceNo == null) {
return "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
}
sequenceNo = sequenceNo.replace("-", "");
String[] parts = sequenceNo.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
StringBuilder letters = new StringBuilder();
StringBuilder numbers = new StringBuilder();
for (String part : parts) {
if (part.matches("\\d+")) {
numbers.append(part);
} else {
letters.append(part);
}
}
String letterPart = letters.toString().toUpperCase();
String numberPart = numbers.toString();
if (!numberPart.isEmpty()) {
String key = "%" + (32 - letterPart.length()) + "s";
numberPart = String.format(key, numberPart).replace(' ', '0');
}
return letterPart + numberPart;
}
}