cryboy007
V2EX  ›  问与答

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

  •  
  •   cryboy007 · Feb 1, 2021 · 820 views
    This topic created in 1927 days ago, the information mentioned may be changed or developed.

    前言

    本人给朋友写了一个处理天猫获奖的小功能,本质就是分析中将用户并写出 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()。就没有这个问题了,求解答~~~~谢谢各位大佬了
    • 图
    • 因为表是朋友建的,我使用生成代码工具,所以是中文,请不要介意...
    Supplement 1  ·  Feb 1, 2021
    能删帖么,大家不用看了。
    * 是我 SB 了,导致的原因是循环里面使用 Stream.map 直接 set 值然后 return 的问题
    1 replies    2021-02-01 20:49:27 +08:00
    cryboy007
        1
    cryboy007  
    OP
       Feb 1, 2021
    中间代码如下
    ```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());
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5457 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 05:52 · PVG 13:52 · LAX 22:52 · JFK 01:52
    ♥ Do have faith in what you're doing.