JDK8使用Stream对数组合并、去重

来源:互联网 发布:闲鱼在淘宝哪里进去 编辑:程序博客网 时间:2024/06/10 18:06

传统的写法

String[] str1 = {"08:00", "09:00", "10:00", "18:00", "21:00"};String[] str2 = {"12:00", "09:00", "10:00", "11:00"}; //合并不去重 List<String> list1 = new ArrayList<String>(Arrays.asList(str1)); list1.addAll(Arrays.asList(str2)); String[] str3 = (String[])list1.toArray(new String[list1.size()]); //利用set特性合并去重 Set set = new HashSet<String>(Arrays.asList(str1)); set.addAll(new HashSet<String>(Arrays.asList(str2))); str3 = (String[])set.toArray(new String[set.size()]);

jdk8写法

String[] str1 = {"08:00", "09:00", "10:00", "18:00", "21:00"};String[] str2 = {"12:00", "09:00", "10:00", "11:00"};//jdk8 streamstr3 = Stream.concat(Stream.of(str1), Stream.of(str2)) //合并        .distinct()     //去重        .sorted()       //排序        .peek(System.out:println)        .toArray(String[]::new);

额外记录reduce用法

String[] temp = Stream.concat(Stream.of(str1), Stream.of(str2)) //合并       .distinct()     //去重        .sorted()       //排序        .reduce((a, b) -> {     //拼接            a = a + "-" + b + "," + b;            return a;        }).get().toString().split(",");//去掉垃圾数据str3 = Arrays.asList(temp)        .stream()        .filter(v -> v.contains("-"))        .peek(System.out::println)        .toArray(String[]::new);

输出

08:00-09:0009:00-10:0010:00-11:0011:00-12:0012:00-18:0018:00-21:00
原创粉丝点击