我有一个非常简单的 Java bean WatchedFile
,它有一个fileName
字段。
我想对一个对象进行排序fj.data.List
,WatchedFile
但我正在努力fj.Ord
为列表的sort()
方法定义一个。这就是我想出的:
protected List<WatchedFile> getWatchedFileList(String path) throws IOException {
List<File> files = List.list(new File(path).listFiles());
return files
.map((file) -> new WatchedFile(file.getName(), false, file.length()))
.sort(Ord.ord(new F<WatchedFile, F<WatchedFile, Ordering>>()
{
@Override
public F<WatchedFile, Ordering> f(final WatchedFile watchedFile1)
{
return new F<WatchedFile, Ordering>()
{
@Override
public Ordering f(final WatchedFile watchedFile2)
{
int compareResult = watchedFile1.fileName.compareTo(watchedFile2.fileName);
return (compareResult < 0 ? Ordering.LT :
(compareResult > 0 ? Ordering.GT : Ordering.EQ));
}
};
}
}));
}
这太丑了!我确信有更好的方法来实例化一个Ord
对象......可能利用一些 Java 8 魔法?