indexof(“f”),返回的是第一次出现字符串的位置
lastIndexof(“a”),返回最后一次字符串出现的位置正则匹配的时候:group从1开始取值
获取正则表达式子模式的匹配串,也就是在目标字符串中匹配有多少满足子模式匹 配条件的字符串,所谓子模式通俗点说就是小括号里的内容
如:(.);user:(.);an:(.);ip:(.);url:(.*)
则groupCount(1,2,3,4,5),分别代表每个小括号的值subString(int beginIndex , int endIndex)
subString(0,”abd;deg”.indexof(“;”)) ===>abd
截取时,到某标识符的时候,直接indexof(“;”),indexof也是从0开始计数的
即:subString(0,5)===>返回的是0~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方法,那么这个迭代器就仍然是合法的。