データ オブジェクトを保持するクラスを作成します。
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 + '}';
}
}
次に、正規表現パターンを使用して文字列を解析し、Data
オブジェクトを作成します。String
おそらく非常に長く、一致しようとしてエクスプレスエンジンがそれに沿って繰り返しバックトラックすることを望まないため、私は所有格マッチャーを使用しました。
はData
、ここのように、個々String
の を実際のデータ型に解析することさえできます。
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);
}
}
出力:
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}
明らかに、それらData
をMap
またはSet
またはあなたに合ったものに入れることができます。