所以我有一个关于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
答案 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