Java 常用开发总结

打印 上一主题 下一主题

主题 914|帖子 914|积分 2742

Java8 集合篇

List Stream 常用操作

1 List 去重
  1. public class StreamTest {
  2.     @Test
  3.     public void test_listDistinct() {
  4.         List<String> oldList = Arrays.asList("a", "b", "a", "c");
  5.         List<String> newList = oldList.stream().distinct().collect(Collectors.toList());
  6.         System.out.println("oldList: " + oldList);
  7.         System.out.println("newList: " + newList);
  8.     }
  9. }
复制代码
2 数组转 List
  1. // int数组转List
  2. int[] ints = {1, 2, 3};
  3. List<Integer> list = IntStream.of(ints).boxed().collect(Collectors.toList());
  4. // String数组转List
  5. String[] arrays = new String[]{"a", "b", "c"};  
  6. List<String> listStrings = Stream.of(arrays).collect(Collectors.toList());
复制代码
3 List 转数组
  1. List<String> list = Arrays.asList("a", "b", "c");
  2. String[] array = list.stream().toArray(String[]::new);
复制代码
4 List 转 Map
  1. List<User> users = getUsers();
  2. Map<Long, User> userMap = users.stream()
  3.                          .collect(Collectors.toMap(
  4.                                  Person::getId,
  5.                                  Function.identity(),
  6.                                  (v1, v2) -> v2
  7.                          ));
复制代码
List Stream 进阶操作

1 List 分组后汇总

If the input was
[(1, “one”), (1, “eins”), (1, “uno”), (2, “two”), (3, “three”)]
the output would be

代码如下:
  1. tuples.stream()
  2.       .collect(Collectors.groupingBy(Tuple::getFirst, Collectors.mapping(
  3.                     Tuple::getSecond,
  4.                     Collectors.toSet()
  5.       )));
复制代码
2 List 打平

假设我们有如下的嵌套List:
  1. List<Integer> list1 = Arrays.asList(1, 2, 3);  
  2. List<Integer> list2 = Arrays.asList(4, 5, 6);
  3. List<List<Integer>> list = Arrays.asList(list1, list2);
复制代码
如果我们想把list值铺平成:[1, 2, 3, 4, 5, 6], 那么可以用 flatMap 来实现。完整例子如下:
  1. @Test
  2. public void testFlatMap() {
  3.     List<Integer> list1 = Arrays.asList(1, 2, 3);
  4.     List<Integer> list2 = Arrays.asList(4, 5, 6);
  5.     List<List<Integer>> list = Arrays.asList(list1, list2);
  6.     List<Integer> newList = list.stream()
  7.             .flatMap(Collection::stream)
  8.             .collect(Collectors.toList());
  9.     System.out.println("newList=" + newList);
  10. }
复制代码
输出:newList=[1, 2, 3, 4, 5, 6]
Java I/O 篇

从 url 中读取文件

有些场景下,比如我们上传了一个 Excel 文件到服务器后服务器会返回一个可以下载的地址,想要通过这个 url 直接读取 Excel 的内容,代码如下:
  1. try (InputStream inputStream = new URL(excelUrl).openStream()) {
  2.         // 使用这个 inputSteam
  3. }
复制代码
我是梅小西,最近在某东南亚电商公司做 DevOps 的相关事情。从本期开始,将陆续分享基于 Jenkins 的 CI/CD 工作流,包括 Jenkins On k8s 等。
如果你对 Java 或者 Jenkins 等感兴趣,欢迎与我联系,微信:wxweven(备注 DevOps),也欢迎关注:

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

乌市泽哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表