点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!

「程序猿DD」星球活动第一期进行中!点击了解详情!

翻译 | 飒然Hang

来源 | https://www.rowkey.me/blog/2017/09/09/java-oneliners/

原文 | https://github.com/aruld/java-oneliners/wiki

本文列举了十个使用一行代码即可独立完成(不依赖其他代码)的业务逻辑,主要依赖的是Java8中的Lambda和Stream等新特性以及try-with-resources、JAXB等。

1、对列表/数组中的每个元素都乘以2

 // Range是半开区间int [] ia = range(1, 10).map(i -> i * 2).toArray();List<Integer> result = range(1, 10).map(i -> i * 2).boxed().collect(toList());

2、计算集合/数组中的数字之和

 range(1, 1000).sum();range(1, 1000).reduce(0, Integer::sum);Stream.iterate(0, i -> i + 1).limit(1000).reduce(0, Integer::sum);IntStream.iterate(0, i -> i + 1).limit(1000).reduce(0, Integer::sum);

3、验证字符串是否包含集合中的某一字符串

final List<String> keywords = Arrays.asList("brown", "fox", "dog", "pangram");
final String tweet = "The quick brown fox jumps over a lazy dog. #pangram http://www.rinkworks.com/words/pangrams.shtml";keywords.stream().anyMatch(tweet::contains);
keywords.stream().reduce(false, (b, keyword) -> b || tweet.contains(keyword), (l, r) -> l || r);

4、读取文件内容

原作者认为try with resources也是一种单行代码编程。

try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {String fileText = reader.lines().reduce("", String::concat);}try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {List<String> fileLines = reader.lines().collect(toCollection(LinkedList<String>::new));}try (Stream<String> lines = Files.lines(new File("data.txt").toPath(), Charset.defaultCharset())) {List<String> fileLines = lines.collect(toCollection(LinkedList<String>::new));}

5、输出歌曲《Happy Birthday to You!》 - 根据集合中不同的元素输出不同的字符串

 range(1, 5).boxed().map(i -> { out.print("Happy Birthday "); if (i == 3) return "dear NAME"; else return "to You"; }).forEach(out::println);

6、过滤并分组集合中的数字

 Map<String, List<Integer>> result = Stream.of(49, 58, 76, 82, 88, 90).collect(groupingBy(forPredicate(i -> i > 60, "passed", "failed")));

7、获取并解析xml协议的Web Service

FeedType feed = JAXB.unmarshal(new URL("http://search.twitter.com/search.atom?&q=java8"), FeedType.class);
JAXB.marshal(feed, System.out);

8、获得集合中最小/最大的数字

 int min = Stream.of(14, 35, -7, 46, 98).reduce(Integer::min).get();min = Stream.of(14, 35, -7, 46, 98).min(Integer::compare).get();min = Stream.of(14, 35, -7, 46, 98).mapToInt(Integer::new).min();int max = Stream.of(14, 35, -7, 46, 98).reduce(Integer::max).get();max = Stream.of(14, 35, -7, 46, 98).max(Integer::compare).get();max = Stream.of(14, 35, -7, 46, 98).mapToInt(Integer::new).max();

9、并行处理

 long result = dataList.parallelStream().mapToInt(line -> processItem(line)).sum();

10、集合上的各种查询(LINQ in Java)

List<Album> albums = Arrays.asList(unapologetic, tailgates, red);//筛选出至少有一个track评级4分以上的专辑,并按照名称排序后打印出来。
albums.stream().filter(a -> a.tracks.stream().anyMatch(t -> (t.rating >= 4))).sorted(comparing(album -> album.name)).forEach(album -> System.out.println(album.name));//合并所有专辑的track
List<Track> allTracks = albums.stream().flatMap(album -> album.tracks.stream()).collect(toList());//根据track的评分对所有track分组
Map<Integer, List<Track>> tracksByRating = allTracks.stream().collect(groupingBy(Track::getRating));

往期推荐

科普:HTTP Status Code详解,从此排错无忧!

面试:说说Java中的 volatile 关键词?

Nginx 为什么快到根本停不下来?

IntelliJ IDEA 2020.2 EAP 5 发布:完美支持Java 15

聊一聊 Spring 中的线程安全性

扫一扫,关注我

一起学习,一起进步

10 个牛逼的单行代码编程技巧,你会用吗?相关推荐

  1. 超酷炫技:10 个牛逼的单行代码编程技巧

    翻译 | 飒然Hang 来源 | https://www.rowkey.me/blog/2017/09/09/java-oneliners/ 原文 | https://github.com/aruld ...

  2. java range(10)_Java 中的十个 ” 单行代码编程 ” ( OneLiner )

    原标题:Java 中的十个 " 单行代码编程 " ( OneLiner ) 作者:飒然Hang 原文链接:www.rowkey.me/blog/2017/09/09/java-on ...

  3. java单行字符_十个便捷的单行代码编程技巧

    1.对列表/数组中的每个元素都乘以2//  www.1b23.com Range是半开区间 int [] ia = range(1, 10).map(i -> i * 2).toArray(); ...

  4. 牛逼!一行代码居然能解决这么多曾经困扰我半天的算法题

    春节假期这么长,干啥最好?当然是折腾一些算法题了,下面给大家讲几道一行代码就能解决的算法题,当然,我相信这些算法题你都做过,不过就算做过,也是可以看一看滴,毕竟,你当初大概率不是一行代码解决的. 学会 ...

  5. Swift 中 10 个震惊小伙伴的单行代码

    几年前,函数式编程的复兴正值巅峰,一篇介绍 Scala 中 10 个单行函数式代码的博文在网上走红.很快地,一系列使用其他语言实现这些单行代码的文章也随之出现,比如 Haskell,Ruby,Groo ...

  6. 牛逼的python代码_牛逼啊!一个随时随地写Python代码的神器

    现在学Python的人越来越多,很多小伙伴都非常有激情,利用碎片时间随时随地学习Python, 大家知道Python是一门编程语言,但是学语言光看不练是没有用的.最好能编程并运行,有没有什么好的神器可 ...

  7. 最牛逼的java代码_分享史上java最牛逼,最简短的代码

    确实是12306的最核心代码呀 alert("当前访问用户过多,请稍后重试!"); 确实牛 public class Test{ static{ System.out.printl ...

  8. 最牛逼的java代码_分享史上java最牛逼 最简短的代码-Go语言中文社区

    也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 确实是12306的最核心代码呀 确实牛public class Test{    static{       System.ou ...

  9. 牛逼c语言代码,这段c语言代码牛逼在哪?

    原标题:这段c语言代码牛逼在哪? 有人说C语言是世界上最牛逼的语言,因为操作系统就是用C语言编写的,学好了C才能更好的学习其他编程语言.为此,有人分享了下面一段代码,说是很牛逼的c语言代码,看得W3C ...

最新文章

  1. 四十六、利用yarn多队列实现hadoop资源隔离
  2. 7 orm 有批量更新_ORM之SQLAlchemy
  3. JAVA 中BIO,NIO,AIO的理解
  4. 58回应“简历数据泄露”:将展开追查并加固安全系统
  5. 设计模式之美:Facade(外观)
  6. 【Android笔记】MediaPlayer基本使用方式
  7. python小程序:备份文件
  8. python闭包怎么理解_Python 闭包的理解
  9. 男孩读计算机好还是铁路学校好,中专学计算机好还是铁路好?
  10. 2019年8月1日星期四(数据结构)
  11. 使用php 发送邮件,使用PHPMailer实现邮件发送代码分享
  12. idea创建springcloud项目_新手向,十分钟快速创建 Spring Cloud 项目
  13. 关于 WPF 在主窗口中用多线程打开的子窗口关闭后进程还存在,这个问的题的解决方法。...
  14. 换服务器原网站数据会丢失吗,ecs服务器更换操作系统后原服务器数据还在吗?...
  15. 鸿蒙电脑操作系统下载,电脑操作系统下载,鸿蒙电脑操作系统下载
  16. 线性表文档之静态链表
  17. 微信小程序广告接入,小程序加广告
  18. Android Scroller 滑动机制
  19. RuntimeError: Error compiling objects for extension 和nvcc fatal : Unsupported gpu architecture ‘c
  20. Ubuntu启动项管理

热门文章

  1. linux c 删除非空目录
  2. java 反序列化利用工具 marshalsec 使用简介
  3. linux shell sleep usleep 延时命令 秒 毫秒 微秒
  4. linux 杀软 clamav 帮助选项翻译
  5. golang 中string和int类型相互转换
  6. shell中uniq与sort -u 两种去重的对别
  7. WireShark 探索网络请求过程(五层网络模型、三次握手、滑动窗口协议)
  8. linux error errno 错误对照
  9. 编写OD插件将IDA中分析出来的函数名导入到OD中
  10. linux2.6内核链表