有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用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) 个答案