Java8 集合篇List Stream 常用操作1 List 去重

public class StreamTest {    @Test    public void test_listDistinct() {        List oldList = Arrays.asList("a", "b", "a", "c");        List newList = oldList.stream().distinct().collect(Collectors.toList());        System.out.println("oldList: " + oldList);        System.out.println("newList: " + newList);    }}

2 数组转 List

// int数组转Listint[] ints = {1, 2, 3};List list = IntStream.of(ints).boxed().collect(Collectors.toList());// String数组转ListString[] arrays = new String[]{"a", "b", "c"};  List listStrings = Stream.of(arrays).collect(Collectors.toList());

3 List 转数组

List list = Arrays.asList("a", "b", "c");String[] array = list.stream().toArray(String[]::new);

4 List 转 Map

List users = getUsers();Map userMap = users.stream()                         .collect(Collectors.toMap(                                 Person::getId,                                 Function.identity(),                                 (v1, v2) -> v2                         ));

List Stream 进阶操作1 List 分组后汇总

If the input was

[(1, “one”), (1, “eins”), (1, “uno”), (2, “two”), (3, “three”)]

the output would be

代码如下:

tuples.stream()      .collect(Collectors.groupingBy(Tuple::getFirst, Collectors.mapping(                    Tuple::getSecond,                    Collectors.toSet()      )));

2 List 打平

假设我们有如下的嵌套List:

List list1 = Arrays.asList(1, 2, 3);  List list2 = Arrays.asList(4, 5, 6);List<List> list = Arrays.asList(list1, list2);

如果我们想把list值铺平成:[1, 2, 3, 4, 5, 6], 那么可以用flatMap来实现。完整例子如下:

@Testpublic void testFlatMap() {    List list1 = Arrays.asList(1, 2, 3);    List list2 = Arrays.asList(4, 5, 6);    List<List> list = Arrays.asList(list1, list2);    List newList = list.stream()            .flatMap(Collection::stream)            .collect(Collectors.toList());    System.out.println("newList=" + newList);}

输出:newList=[1, 2, 3, 4, 5, 6]

Java I/O 篇从 url 中读取文件

有些场景下,比如我们上传了一个 Excel 文件到服务器后服务器会返回一个可以下载的地址,想要通过这个 url 直接读取 Excel 的内容,代码如下:

try (InputStream inputStream = new URL(excelUrl).openStream()) {// 使用这个 inputSteam}

我是梅小西,最近在某东南亚电商公司做 DevOps 的相关事情。从本期开始,将陆续分享基于 Jenkins 的 CI/CD 工作流,包括 Jenkins On k8s 等。

如果你对 Java 或者 Jenkins 等感兴趣,欢迎与我联系,微信:wxweven(备注 DevOps),也欢迎关注:

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