【发布时间】:2012-05-22 19:25:04
【问题描述】:
我正在编写这样的代码:
List<Bean> beans = service.findBeans();
Collections.sort(beans, new BeanComparator());
return beans;
完美运行。我正在寻找的是一条捷径,只需一行:
return somelibrary.Collections.sort(service.findBeans(), new BeanComparator());
或者:
return somelibrary.newList(service.findBeans(), new BeanComparator());
请注意,它需要一个可变列表。
【问题讨论】:
-
原版有什么问题?
-
如果库只是在做与
Collections.sort已经提供的完全相同的事情,那么它的目的是什么? -
您的原始代码看起来很棒。为什么要改变它?在我看来,三行比一行好。为什么人们认为将一堆代码塞进一行更好?保持原样,享受可读性!
-
是java,大部分东西需要不止一行。
-
@Marko 这里真正的问题不是一个版本比另一个版本长,或者我们必须添加另一个依赖项。 如果提议的 API 设计良好且有意义,我会是第一个希望将其添加到标准 API 中的人(尽管有一长串真正明智的好功能,但集合 API 很糟糕失踪)。真正的问题是就地排序不应该返回其输入参数,因为这会导致糟糕的 API 设计。大多数人会期望一个返回集合的
sort,返回输入参数的排序副本。
标签: java oop sorting collections refactoring