2014-01-13 43 views
-1

我用ArrayList和Stax解析器从XML文件中提取数据。 这是每一行的样子在我的XML文件(每行包含不同的数据):STAX解析器和Arraylist

<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; 

下面是斯塔克斯分析器类的代码段:

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中计算(找到平均值/平均值)“light”或“millis”元素并将其显示在文本框中。不需要在文本框中显示,但对我来说会更容易,因为我将使用JFreeChart从文本框中显示数据。

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

+0

你会如何计算这些事情使用任何其他'ArrayList'?似乎你已经发布了一堆与您的实际问题无关的代码...... – StormeHawke

+0

我只是想使用来自“millis”或“light”元素的所有数据并进行计算。我不知道如何从我的数组列表中访问这些元素数据。 – Ignavis

回答

1

因为List<E> implements Iterable<T>,您可以使用for-each循环遍历从解析获得的List<Measurement>并计算average

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