【发布时间】:2014-11-08 19:15:22
【问题描述】:
我有一个非常简单的 Java bean,WatchedFile,它有一个 fileName 字段。
我想对WatchedFile 对象中的fj.data.List 进行排序,但我正在努力为列表的sort() 方法定义fj.Ord。这是我想出的:
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 魔术?
【问题讨论】: