Okay, ich verstehe, was eine NPE ist, und warum sie verursacht werden (die meiste Zeit), aber ich kann nicht herausfinden, warum das passiert.NPE beim Versuch, replaceAll() auf ArrayList <String>
Ich habe eine ArrayList von Strings, die definitiv nicht leer ist, weil ich jedes Element zuvor in einem ListView angezeigt habe.
Ich verwende einen benutzerdefinierten Vergleicher:
public static class NumericalPodcastSort implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
return extractInt(o1) - extractInt(o2);
}
int extractInt(String s) {
String num = s.replaceAll("\\D", ""); << This is where the NPE is occurring.
// return 0 if no digits found
return num.isEmpty() ? 0 : Integer.parseInt(num);
}
}
den ganzzahligen Teil von jeder Saite zu sortieren, in absteigender Reihenfolge (1, 2, 3, etc.), wie gezeigt here
Hier Ich mache die Formatierung und Sortierung der ArrayList, bevor ich sie zurückschicke und anderswo benutze.
public ArrayList<String> formatMindhiveTitles(ArrayList<String> arrayList) {
ArrayList<String> formattedTitles = new ArrayList<>();
for (int i = 0; i < arrayList.size(); i++) {
String title = arrayList.get(i);
formattedTitles.add(StringUtils.substringBetween(title, "mindhive podcast/", ".mp3"));
}
if (!formattedTitles.isEmpty()) {
Collections.sort(formattedTitles, new FragmentUtilities.NumericalPodcastSort());
return formattedTitles;
}
return new ArrayList<>();
}
Ich habe den Collections.sort()
Anruf um zu verschiedenen Orten gemischt, aber ich
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.replaceAll(java.lang.String, java.lang.String)' on a null object reference
ich immer erhalten entschuldige mich, wenn dies eine einfache Lösung, aber für das Leben von mir, ich kann nicht arbeiten, warum das passiert. Es ist kein Problem von mir mit ArrayList<String>
anstelle von List<String>
ist es? Ich sollte nicht denken, aber ich bin mir nicht sicher.
Überprüfen Sie in 'extractInt()' vor dem Ersetzen den Wert von 's'. Es ist wahrscheinlich null – TheLostMind
Ich weiß, dass es null ist, deshalb lege ich den Kommentar dort. Aber "s" wird in der Methode 'compare()' zugewiesen, die die Strings in der ArrayList sortieren soll, die ich an 'Collections.sort (list, myComparator)' übergebe. Was ich nicht verstehe ist, wie ist die Liste, die ich übergebe, die null Werte enthält? –
Anstatt down voting, sag mir, was ich falsch mache. Ich habe Stunden damit verbracht, das Internet zu durchsuchen und SO zu versuchen, dies selbst zu beantworten. Gib mir eine Pause. –