用Java返回排序列表

fal*_*lla 4 java sorting oop collections refactoring

我正在编写这样的代码:

List<Bean> beans = service.findBeans();
Collections.sort(beans, new BeanComparator());
return beans;
Run Code Online (Sandbox Code Playgroud)

它完美地运作.我正在寻找的只是一行的快捷方式:

return somelibrary.Collections.sort(service.findBeans(), new BeanComparator());
Run Code Online (Sandbox Code Playgroud)

要么:

return somelibrary.newList(service.findBeans(), new BeanComparator());
Run Code Online (Sandbox Code Playgroud)

请注意,它需要一个可变列表.

tru*_*ity 11

这是一行:

List<Bean> beans = service.findBeans(); Collections.sort(beans, new BeanComparator()); return beans;
Run Code Online (Sandbox Code Playgroud)

但更严重的是,Java并不是单行的正确语言.而且,仅仅因为某种东西是单线并不意味着它更好.例如,我最初惊讶地发现这个:

return condition ? a : b;
Run Code Online (Sandbox Code Playgroud)

创建比...更长的字节码

if( condition )
    return a;
else
    return b;
Run Code Online (Sandbox Code Playgroud)

但这就是语言和编译器的方式.

如果您坚持一个内胆,番石榴的Ordering可以做到这一点:

return Ordering.from( new BeanComparator() ).sortedCopy( service.findBeans() );
Run Code Online (Sandbox Code Playgroud)

返回的列表是可修改的,可序列化的,并具有随机访问权限.

效率方面我认为在开销方面存在一些浪费.此外,您现在依赖于第三方库.你本质上是使用非常强大的工具来完成一项非常简单的任务.如果您正在使用它,那就太过分了.