首先,感谢阅读!
我已使用CallLog
,logId
,logName
创建了自定义类logCompany
,...
这些CallLog存储在TreeSet中,默认情况下按logPriority
和logDateTime
排序。现在我需要打印按不同值排序的rapports。我已使用abstract class Rapport
等方法创建printByName()
,以便按其他值对TreeSet进行排序。
我不应该改变CallLog的compareTo()
方法,所以我想知道如何使用CallLog
的其他属性对TreeSet进行排序。
答案 0 :(得分:0)
您无法更改现有TreeSet
的排序,但可以使用自定义Comparator
将值复制到另一个[临时]集合中。实际上,您甚至不必创建新集合,只需在打印时对流值进行排序:
E.g:
public class Report {
private Set<CallLog> calls = // initialized somehow...
public void printByName() {
calls.stream()
.sorted(Comparator.comparing(CallLog::logName))
.forEach(System.out::println);
}