当前位置: 首页 > 后端技术 > Java

【Java基础12】正则表达式、Lambda表达式与排序算法

时间:2023-04-02 09:36:33 Java

1.正则表达式正则表达式使用一些指定的字符来制定规则,并使用这些规则来验证数据的合法性。例如,当用户输入注册昵称时,必须检查其有效性。比如长度,你可能会想,用字符串长度的方法,加上if就可以了,但是如果要判断长度,还需要判断字符串是否包含敏感词。你可能会说多次判断还不够实现功能,少量可以实现,如果数量多,代码量可想而知。1.1元字符字符串中提供了匹配正则表达式的方法://匹配成功返回true,否则返回falsepublicbooleanmatches(Stringregex)//替换所有publicStringreplaceAll(Stringregex,StringnewStr)//useregularSplitstringpublicString[]split(Stringregex):匹配单个字符:字符描述[a,b,c]匹配abc[^a,b,c]中任意一个,abc[a-zA中任意一个除外-Z]包含a-z或A-Z[a-p[q-z]]a到p或q-z[a-z&&[d,e,f]]包含a-z并符合d,e,f[a-z&&[^d,e,f]]包含a-z,但d、e、f除外。匹配任意字符\d匹配数值\D匹配非数字字符\s匹配空白字符:[\t\n\x0B\f\r]\S匹配非空白字符串\w匹配数字、字符和下划线\W匹配非单词字符匹配多个字符:字符描述x?x匹配一次或0次x*x匹配0次或多次x+x匹配一次或多次x{n}x匹配n次x{n,}x至少匹配n次x{n,m}x匹配n到m乘以1.2示例System.out.println("abc".matches("[a-z]"));System.out.println("abc".matches("[a-z]+"));System.out.println("9".matches("[\\d]"));System.out.println("991607476".matches("[\\d]{6,20}"));字符串temp="asb121b4b54jb656";//将所有值替换为AStringa=temp.replaceAll("[\\d]+","A");System.out.println(a);//按字母拆分System.out.println(Arrays.toString(temp.split("[a-zA-Z]+")));}}2.Lambda表达式这是java8的新特性之一,简化了匿名类内部类的写法。Lambda表达式实现的匿名内部类必须是函数式接口//Lambda格式(通过Overridden方法的形参列表)->{code;}Functionalinterface:@FunctionInterfacepublicinterfaceinterfacename{//只有且只有这一个抽象方法返回值类型方法名(参数列表);}2.1示例//Interface@FunctionalInterfacepublicinterfaceAnimal{voidbark();}//测试类publicclassLambdaTest{publicstaticvoidmain(String[]args){//之前使用的匿名内部类animalBark(newAnimal(){@Overridepublicvoidbark(){System.out.println("现在是通过匿名内部类实现的,喵喵...");}});//使用Lambda表达式animalBark(()->{System.out.println("ItisnowviaLambda,woofwoof...");});}publicstaticvoidanimalBark(Animalanimal){animal.bark();}}2.2Lambda表达式只有一个参数时不能写速记参数类型,参数类型和()可以省略如果实现类只有一行代码,{}可以省略,也应该省略;如果实现的代码只有一行,且这行代码是return语句,则{}和;可以省略,也应该省略return//示例@FunctionalInterfacepublicinterfaceFunctionInterface1{intadd(intx,inty);}@FunctionalInterfacepublicinterfaceFunctionInterface2{voidshowParam(Stringstr);}publicclassLambdaTest2{publicstaticvoidmain(String[]args){//就这么简单){intadd=functionInterface1.add(1,2);System.out.println(add);}publicstaticvoidshowFunctionInterface2(FunctionInterface2functionInterface2){functionInterface2.showParam("HelloWorld");}}3。排序算法从字面上理解就是按照一定的规则对数据进行排序。按正序排序。需求不难实现,但是在计算速度上有需求就变得有趣了。这就是该算法派上用场的地方,它可以用最少的资源执行相同的操作。使用不同的算法对以下数组进行排序。[94,58,95,4,13,18,70,0,59,21]3.1冒泡排序publicclassBubble{publicstaticint[]x={94,58,95,4,13,18,70,0,59,21};publicstaticvoidmain(String[]args){System.out.println("排序前:"+Arrays.toString(Bubble.x));for(inti=0;i=0){if(Bubble.x[index]==select){break;}if(Bubble.x[index]>select){index=index+(length-index)/2;}if(Bubble.x[index]

最新推荐
猜你喜欢