Вы можете значительно упростить метод сравнения. Вы просто сравниваете строки и получите тот же результат, если просто объедините все строки и одно сравнение. В следующем примере добавляется реализация toString () в качестве бонуса:
@Override
public String toString() {
return String.format("[%s, %s, %s, %s, %s]", srcAddr, dstAddr, srcPort, dstPort, protocol);
}
public int compareTo(Flows other) {
if (other == null)
return 0; // the necessary null check was missing in your code
return toString().compareTo(other.toString());
}
Если вам нужна более высокая производительность, рассмотрите возможность создания объединенной строки во время создания потока и сохранения его в закрытом поле.