使用MyComparator类的java排序ArrayList
我有一个HashMap,我把它复制到ArrayList中,然后我想根据每个条目的带宽对列表中的条目进行排序,带宽越高,它应该出现在列表中的第一个条目 这是我试过的
主类
ArrayList<Signal> messages = new ArrayList<Signal>();
messages.addAll(map.values());
Collections.sort(messages, new MyComparator());
我的比较器类
public class MyComparator implements Comparator<Signal>{
@Override
public int compare(Signal s1, Signal s2) {
if (s1.getBandwidth() > s2.getBandwidth() ) {
return -1;
} else if (s1.getBandwidth() < s2.getBandwidth()) {
return 1;
}
return 0;
}
}
它不会根据带宽对信号对象进行排序
我做错了什么
问题已解决
实际上,我在排序之前没有设置带宽
下面是代码,希望对大家有所帮助
public void createSortedSet(HashMap<String, Signal> map,
final BufferedWriter buffwriter, long totalSize) {
try {
messages.addAll(map.values());
for (Signal signal : messages) {
signal.setBandwidth((signal.getSize() / (float) totalSize) * 100);
}
Collections.sort(messages, new MyComparator());
} catch (Exception e) {
e.printStackTrace();
}
createCSV(buffwriter, messages);
}
谢谢
共 (0) 个答案