STAX Parser和Arraylist

时间:2014-01-13 19:20:35

标签: java xml arraylist jfreechart stax

我使用ArrayList和Stax解析器从XML文件中提取数据。 这是每行在我的XML文件中查找的方式(每行包含不同的数据):

<row>
  <millis>1000</millis>
  <stamp> 1273010254</stamp>
  <datetime> 2010/5/4 21:57:34</datetime>
  <light> 333</light>
  <temp> 78.32</temp>
  <vcc> 3.54</vcc>
</row>

以下是我正在使用的ArrayList

public List<Measurement> readMeasurements(String xmlFile) {

        List<Measurement> measurements = new ArrayList<Measurement>();
        Measurement measurement = null;

以下是Stax Parser类的代码:

if (xmlEvent.isStartElement()){
                    StartElement startElement = xmlEvent.asStartElement();
                    if(startElement.getName().getLocalPart().equals("row")){
                        measurement = new Measurement();
                    }
                    else if(startElement.getName().getLocalPart().equals("millis")){
                        xmlEvent = xmlEventReader.nextEvent();
                        measurement.setMillis(xmlEvent.asCharacters().getData());

依旧......

编程还是新的,所以我的问题是:如何从我的ArrayList计算(找到平均值)“轻”或“毫米”元素并将其显示在文本框中。不需要在文本框中显示,但对我来说会更容易,因为我将使用JFreeChart从文本框中显示数据。

我做了一些研究,并且我读到IndexOf可能会有所帮助,因为我在我的代码中使用相同,但我不知道如何操纵我ArrayList的特定元素。

1 个答案:

答案 0 :(得分:1)

由于List<E>实现了Iterable<T>,您可以使用for-each循环来迭代从解析中获得的List<Measurement>并计算average

int sum = 0;
for (Measurement m : measurements) {
    sum += m.getSomeValue();
}
// find average