百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Java中的十个”单行代码编程”(One Liner)

bigegpt 2024-08-27 11:53 2 浏览

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

  1. 对列表/数组中的每个元素都乘以2
  2. // Range是半开区间
  3. int[] ia = range(1, 10).map(i -> i * 2).toArray();
  4. List<Integer> result = range(1, 10).map(i -> i * 2).boxed().collect(toList());
  5. 计算集合/数组中的数字之和
  6. range(1, 1000).sum();
  7. range(1, 1000).reduce(0, Integer::sum);
  8. Stream.iterate(0, i -> i + 1).limit(1000).reduce(0, Integer::sum);
  9. IntStream.iterate(0, i -> i + 1).limit(1000).reduce(0, Integer::sum);
  1. 验证字符串是否包含集合中的某一字符串
  2. final List<String> keywords = Arrays.asList("brown", "fox", "dog", "pangram");
  3. final String tweet = "The quick brown fox jumps over a lazy dog. #pangram http://www.rinkworks.com/words/pangrams.shtml";
  4. keywords.stream().anyMatch(tweet::contains);
  5. keywords.stream().reduce(false, (b, keyword) -> b || tweet.contains(keyword), (l, r) -> l || r);
  6. 读取文件内容

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


  1. try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
  2. String fileText = reader.lines().reduce("", String::concat);
  3. }
  4. try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
  5. List<String> fileLines = reader.lines().collect(toCollection(LinkedList<String>::new));
  6. }
  7. try (Stream<String> lines = Files.lines(new File("data.txt").toPath(), Charset.defaultCharset())) {
  8. List<String> fileLines = lines.collect(toCollection(LinkedList<String>::new));
  9. }
  10. 输出歌曲《Happy Birthday to You!》 – 根据集合中不同的元素输出不同的字符串
  11. range(1, 5).boxed().map(i -> { out.print("Happy Birthday "); if (i == 3) return "dear NAME"; else return "to You"; }).forEach(out::println);
  12. 过滤并分组集合中的数字
  13. Map<String, List<Integer>> result = Stream.of(49, 58, 76, 82, 88, 90).collect(groupingBy(forPredicate(i -> i > 60, "passed", "failed")));
  14. 获取并解析xml协议的Web Service
  15. FeedType feed = JAXB.unmarshal(new URL("http://search.twitter.com/search.atom?&q=java8"), FeedType.class);
  16. JAXB.marshal(feed, System.out);
  17. 获得集合中最小/最大的数字
  18. int min = Stream.of(14, 35, -7, 46, 98).reduce(Integer::min).get();
  19. min = Stream.of(14, 35, -7, 46, 98).min(Integer::compare).get();
  20. min = Stream.of(14, 35, -7, 46, 98).mapToInt(Integer::new).min();
  21. int max = Stream.of(14, 35, -7, 46, 98).reduce(Integer::max).get();
  22. max = Stream.of(14, 35, -7, 46, 98).max(Integer::compare).get();
  23. max = Stream.of(14, 35, -7, 46, 98).mapToInt(Integer::new).max();
  24. 并行处理
  25. long result = dataList.parallelStream().mapToInt(line -> processItem(line)).sum();
  26. 集合上的各种查询(LINQ in Java)
  27. List<Album> albums = Arrays.asList(unapologetic, tailgates, red);
  28. //筛选出至少有一个track评级4分以上的专辑,并按照名称排序后打印出来。
  29. albums.stream()
  30. .filter(a -> a.tracks.stream().anyMatch(t -> (t.rating >= 4)))
  31. .sorted(comparing(album -> album.name))
  32. .forEach(album -> System.out.println(album.name));
  33. //合并所有专辑的track
  34. List<Track> allTracks = albums.stream()
  35. .flatMap(album -> album.tracks.stream())
  36. .collect(toList());
  37. //根据track的评分对所有track分组
  38. Map<Integer, List<Track>> tracksByRating = allTracks.stream()
  39. .collect(groupingBy(Track::getRating));

相关推荐

10w qps缓存数据库——Redis(redis缓存调优)

一、Redis数据库介绍:Redis:非关系型缓存数据库nosql:非关系型数据库没有表,没有表与表之间的关系,更不存在外键存储数据的形式为key:values的形式c语言写的服务(监听端口),用来存...

Redis系列专题4--Redis配置参数详解

本文基于windowsX64,3.2.100版本讲解,不同版本默认配置参数不同在Redis中,Redis的根目录中有一个配置文件(redis.conf,windows下为redis.windows....

开源一夏 | 23 张图,4500 字从入门到精通解释 Redis

redis是目前出场率最高的NoSQL数据库,同时也是一个开源的数据结构存储系统,在缓存、数据库、消息处理等场景使用的非常多,本文瑞哥就带着大家用一篇文章入门这个强大的开源数据库——Redis。...

redis的简单与集群搭建(redis建立集群)

Redis是什么?是开源免费用c语言编写的单线程高性能的(key-value形式)内存数据库,基于内存运行并支持持久化的nosql数据库作用主要用来做缓存,单不仅仅是做缓存,比如:redis的计数器生...

推荐几个好用Redis图形化客户端工具

RedisPlushttps://gitee.com/MaxBill/RedisPlusRedisPlus是为Redis可视化管理开发的一款开源免费的桌面客户端软件,支持Windows、Linux...

关于Redis在windows上运行及fork函数问题

Redis在将数据库进行持久化操作时,需要fork一个进程,但是windows并不支持fork,导致在持久化操作期间,Redis必须阻塞所有的客户端直至持久化操作完成。微软的一些工程师花费时间在解决在...

你必须懂的Redis十大应用场景(redis常见应用场景)

Redis作为一款高性能的键值存储数据库,在互联网业务中有着广泛的应用。今天,我们就来详细盘点一下Redis的十大常用业务场景,并附上Golang的示例代码和简图,帮助大家更好地理解和应用Redis。...

极简Redis配置(redis的配置)

一、概述Redis的配置文件位于Redis安装目录下,文件名为redis.conf(Windows名为redis.windows.conf,linux下的是redis.conf)你可以通过C...

什么是redis,怎么启动及如何压测

从今天起咱们一起来学习一下关于“redis监控与调优”的内容。一、Redis介绍Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。...

一款全新Redis UI可视化管理工具,支持WebUI和桌面——P3X Redis UI

介绍P3XRedisUI这是一个非常实用的RedisGUI,提供响应式WebUI访问或作为桌面应用程序使用,桌面端是跨平台的,而且完美支持中文界面。Githubhttps://github....

windows系统的服务器快速部署java项目环境地址

1、mysql:https://dev.mysql.com/downloads/mysql/(msi安装包)2、redis:https://github.com/tporadowski/redis/r...

window11 下 redis 下载与安装(windows安装redis客户端)

#热爱编程是一种怎样的体验#window11下redis下载与安装1)各个版本redis下载(windows)https://github.com/MicrosoftArchive/r...

一款轻量级的Redis客户端工具,贼好用!

使用命令行来操作Redis是一件非常麻烦的事情,我们一般会选用客户端工具来操作Redis。今天给大家分享一款好用的Redis客户端工具TinyRDM,它的界面清新又优雅,希望对大家有所帮助!简介Ti...

一个.NET开发且功能强大的Windows远程控制系统

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!项目介绍SiMayRemoteMonitorOS是一个基于Windows的远程控制系统,完...

Redis客户端工具详解(4款主流工具)

大家好,我是mikechen。Redis是大型架构的基石,也是大厂最爱考察内容,今天就给大家重点详解4款Redis工具@mikechen本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集...