json编码与解析

依赖:


        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>

完成:


    public static void fun18() {
        List<String> group1 = new ArrayList<>();
        group1.add("aaa");
        group1.add("bbb");
        group1.add("ccc");
        // json编码
        String s = JSON.toJSONString(group1);
        System.out.println(s);
		// json解码
        List<String> list = JSON.parseObject(s, new TypeReference<List<String>>(){});
        System.out.println(list);
        for (String s1 : list) {
            System.out.println(s1);
        }
    }
    public static void main(String[] args) {
        fun18();
    }

这儿JSON.toJSONString()是将目标转为JSON字符

JSON.parseObject(jsonString, new TypeReference<我是目标^_^>(){})是将 JSON字符串 jsonString 转为目标我是目标^_^

运转:

【Java基础】集合处理  Stream的使用与正则表达式过滤

List内部去重 / List转Set的办法

完成:


    public static void fun24() {
        List<String> group1 = new ArrayList<>();
        group1.add("aaa");
        group1.add("bbb");
        group1.add("ccc");
        group1.add("ccc");
        System.out.println(group1);
        Set<String> collect = group1.stream().collect(Collectors.toSet());
        System.out.println(collect);
    }
    public static void main(String[] args) {
        fun24();
    }

group1.stream()以序列为基础转stream流

group1.stream().collect(Collectors.toSet())将stream流从头转为set调集,使用调集的元素唯一性完成list内部去重。

运转:

【Java基础】集合处理  Stream的使用与正则表达式过滤

两个List的元素去重后兼并

完成


    public static void fun17() {
        List<String> group1 = new ArrayList<>();
        group1.add("aaa");
        group1.add("bbb");
        group1.add("ccc");
        List<String> group2 = new ArrayList<>();
        group2.add("ccc");
        group2.add("ddd");
        group2.add("eee");
        List<String> group = Stream.of(group1, group2).flatMap(Collection::stream).distinct().collect(Collectors.toList());
        System.out.println(group);
    }
    public static void main(String[] args) {
        fun17();
    }

这儿Stream.of(group1, group2)是将两组List兼并为一组List并以Stream类格式回来:Stream<List<?>>

.flatMap()则是将Stream中的每个元素经过.flatMap()中的映射函数处理。

Stream.of(group1, group2).flatMap(Collection::stream)则是对Stream<List<String>>做 Collection::stream 处理,得到:Stream<?>

.distinct()如其名所属,每个元素只保存唯一一个,也便是去重。

.collect(Collectors.toList())则是将Stream从头转为List格式

输出有:

【Java基础】集合处理  Stream的使用与正则表达式过滤

正则表达式软过滤字符

软过滤这个说法是我自己瞎起的,我把错误输入直接抛出异常的状况叫硬过滤,把错误输入转为有效输入的状况叫软过滤

完成:


    public static void fun22() {
        String input = "爱莎萨*()!@#!%#^&*_=--~`@¥%%……(#DS116194亅7,;';;;'''^[\\u4E00-\\u9FA5]+";
        System.out.println(input);
        System.out.println();
        String s = charSoftFiltering(input);
        System.out.println(s);
    }
    public static String charSoftFiltering(String input) {
        // 正则表达式,只允许中文
        String pattern = "^[\\u4E00-\\u9FA5]+";
        // 匹配当前正则表达式
        Matcher matcher = Pattern.compile(pattern).matcher(input);
        // 界说输出
        String output = "";
        // 判断是否能够找到匹配正则表达式的字符
        if (matcher.find()) {
            // 将匹配当前正则表达式的字符串即文件名称进行赋值
            output = matcher.group();
        }
        return output;
    }
    public static void main(String[] args) {
        fun22();
    }

其中Pattern.compile(pattern)将给定的正则表达式编译为形式Pattern

这儿.matcher(input)将给定的输入与形式相匹配。

matcher.find()查找与形式匹配的输入序列的下一个子序列,假如匹配成功,则能够经过开始start、完毕end和分组group办法获得更多信息。

matcher.group()回来与上一个匹配项匹配的输入子序列,对于具有输入序列s的匹配器matcher,表达式matcher.group()s.substring(matcher.start(),matcher.end())等价。

运转:

【Java基础】集合处理  Stream的使用与正则表达式过滤

能够看到成功提取了中文,可是过滤了各种乱码。

参阅

blog.csdn.net/fzy62944246…

blog.csdn.net/genggeonly/…

blog.csdn.net/mu_wind/art…