0

私は ArrayList にコピーする HashMap を持っています。次に、各エントリの帯域幅に従ってリスト内のエントリを並べ替えたいと思います。帯域幅が高いほど、最初にリストに入る必要があります。

メインクラス

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

ありがとう

4

0 に答える 0