Dieses Beispiel zeigt, dass die Sortierung einer Liste alphanumerischer Zeichenfolgen in Java mit einem benutzerdefinierten Komparator sortiert wird. Wir werden eine List
von Strings und die Collections.sort()
-Methode verwenden, mit der wir eine benutzerdefinierte Sortierlogik angeben können. Die integrierte
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class AlphanumericSort { public static void main(String[] args) { List<String> strings = new ArrayList<>(); strings.add("apple1"); strings.add("apple10"); strings.add("apple2"); strings.add("banana1"); strings.add("banana20"); strings.add("banana10"); strings.add("apple"); // Sort using a custom comparator Collections.sort(strings, new AlphanumericComparator()); System.out.println("Sorted strings:"); for (String str : strings) { System.out.println(str); } } static class AlphanumericComparator implements Comparator<String> { @Override public int compare(String s1, String s2) { int i = 0; while (i < s1.length() && i < s2.length()) { char c1 = s1.charAt(i); char c2 = s2.charAt(i); if (Character.isDigit(c1) && Character.isDigit(c2)) { int num1 = 0; int num2 = 0; while (i < s1.length() && Character.isDigit(s1.charAt(i))) { num1 = num1 * 10 + (s1.charAt(i) - '0'); i++; } while (i < s2.length() && Character.isDigit(s2.charAt(i))) { num2 = num2 * 10 + (s2.charAt(i) - '0'); i++; } return Integer.compare(num1, num2); } else if (Character.isDigit(c1)) { return 1; // Digits come after letters } else if (Character.isDigit(c2)) { return -1; // Digits come after letters } else if (c1 != c2) { return c1 - c2; // Compare characters } else { i++; } } return s1.length() - s2.length(); // Compare lengths if prefixes are equal } } }
Comparator
, um numerische Teile als Zahlen und nicht als Zeichenfolgen zu behandeln. Es muss zuerst die alphabetischen Teile und dann die numerischen Teile vergleichen, um die korrekte Bestellung zu gewährleisten. Führende Nullen sollten die Sortierreihenfolge nicht beeinflussen. Vermeiden Sie unnötige String -Manipulationen oder -konvertierungen innerhalb der Vergleichslogik. Das obige Beispiel zeigt einen effizienten Ansatz, der den Overhead minimiert. Erwägen Sie, Überprüfungen für Das obige ist der detaillierte Inhalt vonJava Sortieren alphanumerische Strings Beispiel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!