it-swarm.com.de

So können Sie feststellen, ob eine Liste mit Zeichenfolgen null oder leere Elemente enthält

In Java habe ich die folgende Methode:

public String normalizeList(List<String> keys) {
    // ...
}

Ich möchte überprüfen, dass keys:

  • Ist nicht null selbst; und
  • Ist nicht leer (size() == 0); und
  • Hat keine String Elemente, die null sind; und
  • Hat keine String Elemente, die leer sind ("")

Dies ist eine Utility-Methode, die in einen "Common" -Stil-JAR (die Klasse wird etwas wie DataUtils sein) gehen. Folgendes habe ich, aber ich glaube, es ist falsch:

public String normalize(List<String> keys) {
    if(keys == null || keys.size() == 0 || keys.contains(null) || keys.contains(""))
        throw new IllegalArgumentException("Bad!");

    // Rest of method...
}

Ich glaube, dass die letzten 2 Prüfungen für keys.contains(null) und keys.contains("") falsch sind und wahrscheinlich Laufzeitausnahmen ausgelöst haben. Ich weiß, ich kann einfach die Liste innerhalb der if-Anweisung durchlaufen und dort nach Nullen/Leergut suchen, aber ich suche nach einer eleganteren Lösung, falls sie existiert.

13
IAmYourFaja
 keys.contains(null) || keys.contains("")

Löst keine Laufzeitausnahmen und -ergebnisse aus, true, wenn Ihre Liste entweder einen leeren (oder leeren) String enthält.

29
kosa

Das sieht für mich gut aus, die einzigen Ausnahmen, die Sie von keys.contains(null) und keys.contains("") erhalten würden, wären, wenn keys selbst null wäre.

Da Sie jedoch zuerst prüfen, dass keys an diesem Punkt nicht null ist, treten keine Laufzeitausnahmen auf.

5
NominSim

Sie können auch Apache StringUtils verwenden und prüfen, ob die Zeichenfolge leer ist. Dabei wird nach Null und Emptystring gesucht und der Wert wird abgeschnitten.

if(StringUtils.isBlank(listItemString)){...}

Hier können Sie StringUtils Docs überprüfen:

https://commons.Apache.org/proper/commons-lang/apidocs/org/Apache/commons/lang3/StringUtils.html

1
Goot

Ich bin nicht sicher, aber gibt es in der ApacheCommon-Bibliothek keine Hilfsklasse, die das tut? Wie wenn Sie das isEmpty für einen String haben und isNullOrEmpty in der ApacheCommons-Bibliothek haben 

0
sheidaei

Überprüfen Sie die Liste in einem Durchlauf 

  public static boolean empty(String s) {
    if (s == null)
      return true;
    else if (s.length() == 0)
      return true;
    return false;
  }  

  public String normalize(List<String> keys) {
    if(keys == null || keys.size() == 0)
        throw new IllegalArgumentException("Bad!");
    for (String key: keys)
      if(empty(key))
         throw new IllegalArgumentException("Empty!");

    // Rest of method...
    return null;
  }
0
Roman C

Mit Java 8 können Sie Folgendes tun:

public String normalizeList(List<String> keys) {
    boolean bad = keys.stream().anyMatch(s -> (s == null || s.equals("")));
    if(bad) {
        //... do whatever you want to do
    }
}
0
call-me