每日小结

  1. indexof(“f”),返回的是第一次出现字符串的位置
    lastIndexof(“a”),返回最后一次字符串出现的位置

  2. 正则匹配的时候:group从1开始取值
    获取正则表达式子模式的匹配串,也就是在目标字符串中匹配有多少满足子模式匹 配条件的字符串,所谓子模式通俗点说就是小括号里的内容
    如:(.);user:(.);an:(.);ip:(.);url:(.*)
    则groupCount(1,2,3,4,5),分别代表每个小括号的值

  3. subString(int beginIndex , int endIndex)
    subString(0,”abd;deg”.indexof(“;”)) ===>abd
    截取时,到某标识符的时候,直接indexof(“;”),indexof也是从0开始计数的
    即:subString(0,5)===>返回的是0~4上的值

  4. linux 命令
    grep 查看 :
    -r:递归查找
    -n:显示行数
    *:当前目录所有文件,也可以是某个文件名
    -w:匹配单词(非字符串)
    grep -rn “abc” * 查字符串出现在文件
    grep -w “qwe” file 匹配字符串

5.set,,list一边遍历,一边删除会报线程不安全

运行出异常:
Exception in thread “main” java.util.ConcurrentModificationException

要改成迭代器遍历,迭代器删除,迭代器遍历采用的是游标的形式

 Iterator iterator = set.iterator();
        while (iterator.hasNext()) {
            LinkedHashSet<String> setchar = new LinkedHashSet<>();
            String  st = iterator.next().toString();
            for (int a = 0; a < st.length(); a++) {
                setchar.add(String.valueOf(st.charAt(a)));
                set.remove(st);//错误的删除方式
                iterator.remove();//正确的删除方式
            }
        }

ArrayList或者Set采用size属性来维护自已的状态,而Iterator采用cursor来来维护自已的状态。
当size出现变化时,cursor并不一定能够得到同步,除非这种变化是Iterator主动导致的。
当Iterator.remove方法导致Set或者ArrayList列表发生变化时,他会更新cursor来同步这一变化。但其他方式导致的ArrayList变化,Iterator是无法感知的。ArrayList自然也不会主动通知Iterator们。Iterator为了防止状态不一致可能引发的无法设想的后果,Iterator会经常做checkForComodification检查,以防有变。如果有变,则以异常抛出,所以就出现了上面的异常。
如果对正在被迭代的集合进行结构上的改变(即对该集合使用add、remove或clear方法),那么迭代器就不再合法(并且在其后使用该迭代器将会有ConcurrentModificationException异常被抛出).如果使用迭代器自己的remove方法,那么这个迭代器就仍然是合法的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值