ne veut pas?
Je ne peux pas aider si le type est différent Vous pouvez gérer en toute sécurité tout ce qui concerne String Dans le but de
StringUtils.java
package utils;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.Arrays;
import java.util.HashMap;
/**
*String est une classe
*
* @author Mr.Polyvalence extrême
*
*/
public class StringUtils {
/**Arguments de chaîne multiples*/
private static final List<String> MULTIPLE_STRING = Arrays.asList("a", null, "b", "", "3");
/**
*expérimental
*
* @param args
*/
public static void main(String[] args) {
System.out.println(extraction(MULTIPLE_STRING));
}
/**
* {@code null}Pour vider.<br>
* {@code null}Comme ce n'est pas.
*
* @param str Chaîne de caractères d'entrée
* @retourner le résultat de la conversion
*/
private static String nullToBlank(String str) {
return Objects.toString(str, "");
}
/**
* {@code null}Pour vider.<br>
* {@code null}Comme ce n'est pas.
* <p>
*L'argument lui-même{@code null}Ou lorsque le nombre d'éléments est égal à 0,Renvoie une liste vide.
*
* @entrée de la liste de paramètres{@code List<String>}
* @retourner le résultat de la conversion
*/
private static List<String> nullToBlank(List<String> list) {
if (list != null)
return list.stream().map(StringUtils::nullToBlank).collect(Collectors.toList());
return Arrays.asList();
}
/**
*Entré{@code List<String>}Dans<br>
* {@code null}Et éliminez les personnages vides
*
* @entrée de la liste de paramètres{@code List<String>}
* @retourner le résultat de la conversion
*/
private static List<String> nullBlankSmasher(List<String> list) {
return nullToBlank(list).stream().filter(v -> !v.isEmpty()).collect(Collectors.toList());
}
/**
* {@code Map<String, Integer>}Contre
* <p>
* <ul>
* <li>Quand la chaîne de caractères saisie peut être convertie en une valeur numérique<br>
* {Caractères vides,Valeur numérique après conversion}rends le<br>
* <li>Lorsque la chaîne de caractères saisie ne peut pas être convertie en valeur numérique<br>
* {Chaîne de caractères avant la conversion, {@code null}}rends le
* </ul>
*
* @carte des paramètres Carte pour le stockage
* @param str Chaîne de caractères à convertir
*/
private static void store(Map<String, Integer> map, String str) {
try {
map.put("", Integer.parseInt(str));
} catch (NumberFormatException e) {
map.put(str, null);
}
}
/**
*Convertir ce qui peut être converti numériquement et trier ce qui ne l'est pas, inchangé.
* <p>
* <ul>
* <li>Quand la chaîne de caractères saisie peut être convertie en une valeur numérique<br>
* {Caractères vides,Valeur numérique après conversion}rends le<br>
* <li>Lorsque la chaîne de caractères saisie ne peut pas être convertie en valeur numérique<br>
* {Chaîne de caractères avant la conversion, {@code null}}rends le
* </ul>
*
* @entrée de la liste de paramètres{@code List<String>}
* @retour Résultat du tri
*/
private static Map<String, Integer> toInteger(List<String> list) {
Map<String, Integer> map = new HashMap<String, Integer>();
nullBlankSmasher(list).forEach(v -> {
store(map, v);
});
return map;
}
/**
*Effectuez les opérations suivantes sur la liste des chaînes de caractères d'entrée
* <p>
* <ul>
* <li>{@code null}Et supprimer les lettres vides
* <li>Convertir une chaîne de caractères pouvant être convertie en une valeur numérique en une valeur numérique
* <li>Avec une liste de chaînes qui n'ont pas pu être converties,Renvoie une carte de la liste des nombres après la conversion
* </ul>
*
* @entrée de la liste de paramètres{@code List<String>}
* @retour Résultat du tri
*/
private static Map<List<String>, List<Integer>> extraction(List<String> list) {
Map<List<String>, List<Integer>> map = new HashMap<List<String>, List<Integer>>();
map.put(toInteger(list).keySet().stream().filter(v -> !v.isEmpty()).collect(Collectors.toList()),
toInteger(list).values().stream().filter(Objects::nonNull).collect(Collectors.toList()));
return map;
}
}
je l'ai fait
Valeur d'entrée: List
Correspondance avec laquelle la valeur d'entrée est nulle et le nombre d'éléments est 0 Ne faites pas tout en même temps, mais faites-le séparément pour chaque partie Rendu possible de gérer lorsque vous ne souhaitez utiliser qu'une pièce
Je veux en faire une fenêtre plus générale en utilisant le type d'objet et facultatif
Et bien c'est difficile ...
Je veux un médicament universel
Recommended Posts