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

{ 1 = [“one”, “eins”, “uno”], 2 = [“two”], 3 = [“three”] }

代码如下:

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 的相关事情。

如果你对 Java 或者 Jenkins 等感兴趣,欢迎与我联系,微信:wxweven(备注 DevOps),也欢迎关注公众号:稳哥的 Java 之路

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值