Créer une classe pour tenir vos objets de données:
private static final class Data {
private final BigDecimal point;
private final Date date;
public Data(final String point, final String date) {
this.point = new BigDecimal(point);
this.date = new Date(Long.parseLong(date));
}
@Override
public String toString() {
return "Data{" + "point=" + point + ", date=" + date + '}';
}
}
Parse maintenant la chaîne en utilisant un modèle regex, la construction des Data
objets que vous allez. J'ai utilisé des coupleurs possessifs car le String
est probablement assez long et vous ne voulez pas que le moteur express le fasse revenir en arrière en essayant de faire correspondre.
Le Data
peut, comme ici, même analyser les String
individuels aux types de données réels.
public static void main(String[] args) {
final String s = "[14.1,1363649400],[14.4,1363650300],[14.6,1363651200],[15.1,1363652100],[14.3,1363653000],[14.2,1363653900],[14.8,1363654800]";
final Pattern p = Pattern.compile("\\[([^,]++),(\\d++)\\]");
final Matcher matcher = p.matcher(s);
final Collection<Data> datas = new LinkedList<Data>();
while (matcher.find()) {
datas.add(new Data(matcher.group(1), matcher.group(2)));
}
for (final Data data : datas) {
System.out.println(data);
}
}
Sortie:
Data{point=14.1, date=Fri Jan 16 19:47:29 GMT 1970}
Data{point=14.4, date=Fri Jan 16 19:47:30 GMT 1970}
Data{point=14.6, date=Fri Jan 16 19:47:31 GMT 1970}
Data{point=15.1, date=Fri Jan 16 19:47:32 GMT 1970}
Data{point=14.3, date=Fri Jan 16 19:47:33 GMT 1970}
Data{point=14.2, date=Fri Jan 16 19:47:33 GMT 1970}
Data{point=14.8, date=Fri Jan 16 19:47:34 GMT 1970}
Évidemment, vous pouvez mettre ces Data
dans un Map
ou Set
ou tout ce que vous convient.
' "1,3", "3,4"' d'où il vient? –
@NikolayKuznetsov De l'entrée '" [1,3], [3,4] "'. –
C'est juste un exemple de sortie. ["1,3"], ["3,4"] => "1,3"], ["3,4" => "1,3", "3,4" –