V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cryboy007
V2EX  ›  问与答

关于集合 clear()方法。不知道什么原因,求大佬帮忙分析下

  •  
  •   cryboy007 · 2021-02-01 20:47:40 +08:00 · 501 次点击
    这是一个创建于 1206 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    本人给朋友写了一个处理天猫获奖的小功能,本质就是分析中将用户并写出 2 个 excel,一个进行模糊化,一个不进行模糊化。

    //伪代码
    集合.stream().foreach(item -> {
    List data;//查数据
    write2.writeExcel(data);//未加密
    write3.writeExcel(list);//已加密
    })
    
    

    问题来了,当我进行模糊化的时候,data 应该是未加密的,ps:之前使用 1 个多月都没问题。今天下午的时候,朋友跟我说里面有几个加密的文件。然后进行分析,发现是这里报了 xxx,如下所示

    java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
    ***4
    ^
    
    
    • 然后问题来了,当我在 stream 里循环时进行集合.clear()。就没有这个问题了,求解答~~~~谢谢各位大佬了
    • 图
    • 因为表是朋友建的,我使用生成代码工具,所以是中文,请不要介意...
    第 1 条附言  ·  2021-02-01 23:56:48 +08:00
    能删帖么,大家不用看了。
    * 是我 SB 了,导致的原因是循环里面使用 Stream.map 直接 set 值然后 return 的问题
    1 条回复    2021-02-01 20:49:27 +08:00
    cryboy007
        1
    cryboy007  
    OP
       2021-02-01 20:49:27 +08:00
    中间代码如下
    ```java
    /**模糊化*/
    List<订单表> list = collect.stream().map(item -> {
    try {
    item.set 订单编号(item.get 订单编号().replaceFirst(item.get 订单编号().substring(5, 9), "***"));
    item.set 买家会员名(item.get 买家会员名().replace(item.get 买家会员名().substring(1,item.get 买家会员名().length()-1),"****"));
    } catch (Exception e) {
    e.printStackTrace();
    log.error(e.getMessage());
    }
    return item;
    }).collect(toList());
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1059 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 71ms · UTC 22:23 · PVG 06:23 · LAX 15:23 · JFK 18:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.