使用excel文件中的数据迭代arraylist

时间:2016-11-23 08:53:30

标签: java arraylist iteration

所以我有一个关于excel的文档,我有一个数据列表,说明有多少人使用x或y以及多少次。所以基本上我有一个人员ID列,一个类型为(x和y)的列,然后是一列,说明人们使用x或y的次数。我希望能够在不更改它的情况下遍历列表,以便获得使用每种类型的人数,并且我希望列表按升序或频率排序。所以我想使用for循环遍历列表并在其中放置一个if语句,如果是x,那么另一个for循环能够按频率对它们进行分组。

我所拥有的实际代码并不好,但我真的很困惑,并且真的不知道如何继续:

 for(int i = 0; i < type1.size(); i++){
       if(events.get(i).isX()){
           for(int j = 0; j < /*max value of the data in the list*/; j++ )
  //here list should group all common frequency
       }
       else
//do same thing but for y

Excel table eg

QUESTION

1 个答案:

答案 0 :(得分:0)

假设您有一个包含三列的excel文件:

id | type | frequency

表示excel文件数据的List。您可能希望使用Collections.sort(Comparator<T>)方法订购您的Entrys。

以下是如何实现这一目标的示例:

示例

Arraylist<Row> yourList = new ArrayList();
fillListWithExlData(yourList);

for(int i = 0; i < yourList.size(); i++){
    Collections.sort(yourList, new Comparator<Row>()){
    //compares row i with the following row
    compare(Row oneRow, Row followingRow){
    //if the result is 1 =< the entry moves on higher in the list if the result is = 0 it stays on its position and if its <= -1 it moves down.
    return oneRow.getFrequenzy() - followingRow.getFrequenzy();
    }
    });
}

注意:您也可以使用比较器来订购“类型”。

示例b

return (oneRow.getType() == followingRow.getType()) ? 0 : -1;

或者您甚至可能想要匹配id和频率。然后你可以试试这个:

示例c

return (oneRow.getType() == followingRow.getType() &&  
        oneRow.getFrequenzy() == followingRow.getFrequenzy())
        ? 0 : -1;

示例 a 应订购潜在的列表:

id | type | frequency
1  |  x   |    12
2  |  y   |    10
3  |  x   |    12

成:

id | type | frequency
1  |  x   |    12
3  |  x   |    12
2  |  y   |    10