Java 常用開發總結

Java8 集合篇

List Stream 常用操作

1 List 去重

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

2 數組轉 List

// int數組轉List
int[] ints = {1, 2, 3};
List<Integer> list = IntStream.of(ints).boxed().collect(Collectors.toList());

// String數組轉List
String[] arrays = new String[]{"a", "b", "c"};  
List<String> listStrings = Stream.of(arrays).collect(Collectors.toList());

3 List 轉數組

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

4 List 轉 Map

List<User> users = getUsers();
Map<Long, User> 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<Integer> list1 = Arrays.asList(1, 2, 3);  
List<Integer> list2 = Arrays.asList(4, 5, 6);
List<List<Integer>> list = Arrays.asList(list1, list2);

如果我們想把list值鋪平成:[1, 2, 3, 4, 5, 6], 那麼可以用 flatMap 來實現。完整例子如下:

@Test
public void testFlatMap() {
    List<Integer> list1 = Arrays.asList(1, 2, 3);
    List<Integer> list2 = Arrays.asList(4, 5, 6);
    List<List<Integer>> list = Arrays.asList(list1, list2);

    List<Integer> 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 發佈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章