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)
返回的列表是可修改的,可序列化的,并具有随机访问权限.
效率方面我认为在开销方面存在一些浪费.此外,您现在依赖于第三方库.你本质上是使用非常强大的工具来完成一项非常简单的任务.如果您正在使用它,那就太过分了.