Analyser à partir de la Liste<String> Java
J'essaie d'analyser la valeur des éléments dans une Liste déclarée ainsi:
List<String> uniqueList = new ArrayList<String>(dupMap.values());
Les valeurs sont comme ceci:
a:1-2
b:3-5
mais j'en veux un ArrayList avec le premier nombre (c'est à dire 1, 3) et l'autre avec le deuxième (2, 5). J'ai cela a fonctionné... Sorta:
String delims= "\t"; String delim2= ":"; String delim3= "-";
String splits2[]; String splits3[]; String splits4[];
Map<String,String> dupMap = new TreeMap<String, String>();
List<String> uniqueList = new ArrayList<String>(dupMap.values());
ArrayList<String> parsed2 = new ArrayList<String>();
ArrayList<String> parsed3 = new ArrayList<String>();
ArrayList<String> parsed3two= new ArrayList<String>();
double uniques = uniqueList.size();
for(int a=0;a<uniques;a++){
//this doesn't work like it would for an ArrayList
splits2 = uniqueList.split(delim2) ;
parsed2.add(splits2[1]);
for(int q=0; q<splits2.length; q++){
String change2 = splits2[q];
if(change2.length()>2){
splits3 = change2.split(delim3);
parsed3.add(splits3[0]);
String change3=splits3[q];
if (change3.length()>2){
splits4 = change3.split(delims);
parsed3two.add(splits4[0]);
}
}
}
}
uniqueList.split ne fonctionne pas, cependant, et je ne sais pas si il existe une fonction similaire pour la Liste. Est-il des suggestions?
- De quel type d'objet est
dupMap
? split()
est un membre de laString
classe. Vous pouvez parcourir leString
s dans votre liste etsplit()
chacun ensuite de placer les résultats dans vos deux listes distinctes.- Tout d'abord, votre nom est une sorte de génial. Deuxièmement, j'ai édité mon post pour avoir l'information. Il semble que j'ai oublié.
- aucune raison de s'en parsed2 et quelques autres sont de type ArrayList et pas Liste?
- Je suis désolé, pouvez-vous expliquer davantage? Je ne suis pas sûr de comprendre. Vous voulez dire que je peux dire quelque chose comme cela dans une boucle d'itération x: = quelque chose uniqueList.get(x); splits2 = quelque chose.split(delim2); ?
- J'ai ajouté une réponse avec plus de détails. Espérons que cela aide.
InformationsquelleAutor Stephopolis | 2012-08-29
Vous devez vous connecter pour publier un commentaire.
Si vous savez que toutes vos données dans le formulaire
[something]:[num]-[num]
, vous pouvez utiliser une expression régulière comme ceci:Je n'ai pas mis le code à ajouter à la spécificité de
ArrayList
s parce que je ne pouvais pas tout à fait dire à partir de votre code quiArrayList
était censé tenir la valeur.Modifier
Par Code-Gourou commentaire, une mise en œuvre à l'aide de
String.split()
serait quelque chose comme ceci:Les deux approches sont à peu près les mêmes en termes d'efficacité.
String.split()
peut grandement simplifier ce code.split()
, il faudrait au minimum deux regex appels (un pour chaquesplit()
.) Si le nombre de cordes est assez grand, c'est plus efficace. Sauf s'il a été.split("[:\\-]*")
, je suppose.split()
au lieu de droites regexes.*
dans la regex? Je pense que la mise en forme dans ce cas spécifie uniquement à un seul caractère délimiteur.split()
.De ce que je comprends de votre question, je voudrais procéder comme suit:
C'est en pseudo-code. La traduction en Java est laissé comme exercice au lecteur.