pour être plus claire je vais expliquer cette partie de code, en fait lorsque je déclare manuellement mon tableau de string
String[] valeurs = "201,102,103,104,205,206,107,108,109,110, 1216461300, 201,102,103,104,205,206,107,108,109,110, 1216463520, 201,202,103,104,205,206,207,108,109,210, 1216466220".split(",");
et je veux chercher ces deux motifs
1 2
| String[] motif1= "102 103 104 205".split(" ");
String[] motif2= "103".split(" "); |
en appelant cette méthode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| public static List<String> TimeStamp(String [] item, String[] ligne)
{
Set<String> valeursAvantTimeStamp = new HashSet<>();
List<String> list = new ArrayList<>();
for(int j=0; j<ligne.length; j++)
{
if ( (j+1)%11==0 )
{
// la valeur est un timestamp
for(String x : item)
{
if ( valeursAvantTimeStamp.contains(x))
{
list.add(ligne[j]);
}
valeursAvantTimeStamp.clear();// on vide le set pour continuer
}
}
else
{
// la valeur n'est pas un timestamp
valeursAvantTimeStamp .add(ligne[j]); // on stocke la valeur
}
}
return list;
} |
ça fonctionne et me génère comme résultat
1 2
| [1216461300, 1216463520]
[1216461300, 1216463520, 1216466220] |
mais je veux récupérer ces lignes directement de ma base
1 2 3 4 5 6 7 8 9 10 11 12
| List<String> result = new ArrayList<>();
for(int i=0; i<matrix.length; i++) {
for(int j=0; j<matrix[i].length; j++) {
result = Acces(matrix[3][0], lines);
// System.out.println(result.size());
// System.out.println(result);
}
}
String[] array = result.toArray(new String[0]); |
la méthode acces est
1 2 3 4 5 6 7 8 9 10 11
| static List<String> Acces(int nb, List<List<String>> liste) {
if (nb < liste.size())
{
return liste.get(nb);
}
else
{
return new ArrayList<>();
}
} |
String[] motif1= "102 103 104 205".split(" ");
System.out.println(TimeStamp(motif1,array));
j'obtient comme résultat donc j'ai cru que j'ai pas bien converti la liste en String[], c'est ça ma question
Partager