杭州网站建设icp备品牌推广与传播

张小明 2026/3/2 21:51:36
杭州网站建设icp备,品牌推广与传播,公司营销网络怎么写,网站开发招聘需要文章目录Ⅰ. 枚举类定义与使用Ⅱ. 枚举类的构造方法默认就是 private总结Ⅲ. 什么是 Lambda 表达式Ⅳ. Lambda 表达式的使用列表排序的常用写法1. **基本比较#xff08;数值#xff09;**Integer.compare(a, b)2. **方法引用 ** **Comparator.comparing**3. **多条件排序**4…文章目录Ⅰ. 枚举类定义与使用Ⅱ. 枚举类的构造方法默认就是 private总结Ⅲ. 什么是 Lambda 表达式Ⅳ. Lambda 表达式的使用列表排序的常用写法1. **基本比较数值**Integer.compare(a, b)2. **方法引用 ** **Comparator.comparing**3. **多条件排序**4. **倒序排序**5. **处理 null 值**6. **字符串比较忽略大小写**7. **完全自定义规则**Ⅰ. 枚举类定义与使用publicenumColor{RED,GREEN,BLUE,YELLOW,ORANGE,PURPLE,PINK,BROWN,BLACK,WHITE;}每个我们写的enum类都会默认继承于一个抽象类Enum如下图所示而这个Enum抽象类中有挺多方法如下所示下面是使用举例publicstaticvoidmain(String[]args){// 使用Color.RED直接访问枚举元素或者直接RED都行但不能使用new来生成枚举类对象ColorcolorColor.RED;System.out.println(color.name());// 输出颜色名称System.out.println(color.ordinal());// 输出颜色的序号System.out.println(color);// 直接输出颜色对象System.out.println(color.describeConstable());// 输出颜色的描述信息System.out.println(Color.valueOf(BLACK));// 通过名称获取枚举值// 有个比较特殊的是values()方法它可以返回所有枚举值数组它不存在Enum中而是在编译时由编译器生成的。// 但是如果枚举值太多可能导致内存溢出所以一般不用这个方法。System.out.println(----------------------输出所有枚举元素);Color[]colorsColor.values();for(inti0;icolors.length;i){System.out.println(colors[i] colors[i].ordinal());}Colorc2newColor();// ❌不能实例化枚举类只能通过枚举值访问其属性和方法。}// 运行结果RED0REDOptional[EnumDesc[Color.RED]]BLACK----------------------输出所有枚举元素 RED0GREEN1BLUE2YELLOW3ORANGE4PURPLE5PINK6BROWN7BLACK8WHITE9这里要注意values()是由Java编译器为每个枚举类自动生成的静态方法所以在Enum类里是找不到它的源码的但每个具体的枚举类都有它。还有就是枚举类内也可以有方法并且这些方法只能通过枚举元素来调用而不能直接通过枚举类名来调用如下图所示Ⅱ. 枚举类的构造方法默认就是private枚举类的构造方法是隐式private的是为了保证枚举常量的唯一性避免外部创建新的实例防止破坏enum的封闭性在某些场景下天然实现单例模式并且是线程安全的、防反射、防反序列化首先枚举类也是可以写构造函数然后枚举元素可以进行构造如下所示publicenumColor{RED(red,1),GREEN(green,2),BLUE(blue,3);privateStringname;privateintvalue;// 构造函数默认就是private不写也可以但是不能写其它的访问权限privateColor(Stringname,intvalue){this.namename;this.valuevalue;}publicstaticvoidmain(String[]args){ColorcColor.RED;System.out.println(c.name);System.out.println(c.value);}}// 运行结果red1然后测试一下不同对象引用同一个枚举元素是不是同一地址publicstaticvoidmain(String[]args){Colorc1Color.RED;Colorc2Color.RED;System.out.println(c1c2);// true}很明显不同对象引用同一个枚举元素都是同一个对象。然后看一下是不是能够在类内调用构造方法publicstaticvoidmain(String[]args){ColorcnewColor();// ❌报错无法实例化枚举类型}那么就想能不能用反射来设置访问权限强制调用构造方法如下所示publicstaticvoidmain(String[]args){try{// 先获取构造函数再设置Accessible为trueClass?csClass.forName(EnumDemo.Color);Constructor?ctorcs.getDeclaredConstructor(String.class,int.class);ctor.setAccessible(true);// 调用构造函数创建对象Colorc(Color)ctor.newInstance(yellow,4);System.out.println(c.name c.value);}catch(ClassNotFoundExceptione){thrownewRuntimeException(e);}catch(InvocationTargetExceptione){thrownewRuntimeException(e);}catch(NoSuchMethodExceptione){thrownewRuntimeException(e);}catch(InstantiationExceptione){thrownewRuntimeException(e);}catch(IllegalAccessExceptione){thrownewRuntimeException(e);}}然后报了如下错误其实这个参数错误是因为每个枚举类都默认继承了Enum而Enum类的构造方法又有两个参数如下所示这时就需要一起放在我们的枚举类的参数列表中传入才行Constructor?ctorcs.getDeclaredConstructor(String.class,int.class,String.class,int.class);解决上述问题之后此时又有一个错误如下所示点击第二行跳转过去看看源码总结Enum类同样有构造方法但一定得是private修饰。Enum类的每一个枚举元素都是【单例】。Enum类型的类不能通过调用【构造方法】来创建实例。Enum类型的类不能通过【反射】来创建新的实例因为Enum的实例在编译时就已经确定且JVM保证了这些实例的唯一性。Ⅲ. 什么是Lambda表达式Lambda表达式是JavaSE8中一个重要的新特性它允许通过表达式来代替功能接口。Lambda表达式和方法一样它提供了一个正常的参数列表和一个使用这些参数的主体可以是一个表达式或一个代码块)。基本语法如下所示(parameters)-expression 或者(parameters)-{statements;}举一些例子// 1. 不需要参数返回值为 2()-2// 2. 接收⼀个参数返回其2倍的值x-2*x// 3. 接受2个参数并返回他们的和(x,y)-xy// 4. 接收2个int型整数返回他们的乘积(intx,inty)-x*y// 5. 接受⼀个 string 对象并在控制台打印不返回任何值(Strings)-System.out.print(s)函数式接口定义一个接口且其中只有一个抽象方法可以包含普通方法。注意如果我们在某个接口上声明了FunctionalInterface注解那么编译器就会按照函数式接口的定义来要求该接口这样如果有两个抽象方法程序编译就会报错的。举个例子FunctionalInterfaceinterfaceNoParameterNoReturn{voidtest();// 合法可以有普通方法defaultvoidtest2(){System.out.println(JDK1.8新特性default默认⽅法可以有具体的实现);}}Ⅳ.Lambda表达式的使用FunctionalInterfaceinterfaceMyInterface1{voidmyMethod();}FunctionalInterfaceinterfaceMyInterface2{intmyMethod(inta,intb);}publicclassdemo2{publicstaticvoidmain(String[]args){MyInterface1myif1()-System.out.println(无参无返回值方法);myif1.myMethod();MyInterface2myif2(a,b)-ab;System.out.println(有参数有返回值myif2.myMethod(2,3));}}☠ 注意事项参数类型可以省略。如果需要省略每个参数的类型都要省略。参数的小括号里面只有一个参数那么小括号可以省略如果方法体当中只有一句代码那么大括号可以省略如果方法体中只有一条语句且是return语句那么大括号可以省略且去掉return关键字。lambda表达式捕获变量的规则和匿名内部类是一样的具体可以参考匿名内部类笔记lambda表达式是“函数式接口” 的一个匿名实现对象区分开以下两者的区别// Runnable是一个函数式接口需要重写里面的run()方法Runnabler()-System.out.println(Hello, Lambda!);// Thread只是一个类但是可以Thread(Runnable r)来构造所以才需要new Thread然后回到上面的问题ThreadtnewThread(()-System.out.println(work));列表排序的常用写法1.基本比较数值Integer.compare(a, b)安全的数值比较避免溢出list.sort((p1,p2)-Integer.compare(p1.getAge(),p2.getAge()));适用于int,double,long等基本类型数值比较安全性优先避免a - b的溢出问题2.方法引用 Comparator.comparing最简洁可读的写法list.sort(Comparator.comparing(Person::getAge));优点语义明确别人一看就知道是按年龄排序支持链式调用.thenComparing(...)3.多条件排序list.sort(Comparator.comparing(Person::getAge).thenComparing(Person::getName));场景先按主条件排年龄如果相同再按次条件名字4.倒序排序两种常见方式// 方式1reversed()list.sort(Comparator.comparing(Person::getAge).reversed());// 方式2负数技巧不推荐大数list.sort((p1,p2)-Integer.compare(p2.getAge(),p1.getAge()));5.处理 null 值list.sort(Comparator.comparing(Person::getAge,Comparator.nullsLast(Integer::compareTo)));说明nullsFirst→ null 在最前面nullsLast→ null 在最后面6.字符串比较忽略大小写list.sort(Comparator.comparing(Person::getName,String.CASE_INSENSITIVE_ORDER));7.完全自定义规则当规则复杂比如特殊业务逻辑时list.sort((p1,p2)-{if(p1.getAge()p2.getAge()){returnp1.getName().length()-p2.getName().length();}returnp1.getAge()-p2.getAge();});
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

建设网站细节高端大气

5步搞定MPC-HC主题定制:新手也能轻松美化播放器界面 【免费下载链接】mpc-hc Media Player Classic 项目地址: https://gitcode.com/gh_mirrors/mp/mpc-hc 厌倦了千篇一律的播放器外观?想要打造属于自己的个性化视频播放体验?Media Pl…

张小明 2026/1/11 19:02:06 网站建设

岳阳网站建设推广青海网站建设推广

浏览器原生Python编程革命:JupyterLite深度解析与应用指南 【免费下载链接】jupyterlite Wasm powered Jupyter running in the browser 💡 项目地址: https://gitcode.com/gh_mirrors/ju/jupyterlite 在当今数字时代,编程环境的便捷性…

张小明 2026/1/11 20:20:52 网站建设

制作英文网站多少钱租车公司网站模板

3.6 线上问题排查实战:让你的 AI 服务 7x24 小时稳定运行 导语:欢迎来到第三周的终极实战!我们已经成功地将“旅小智”部署到了云端。但是,部署成功只是一个新的开始。在真实的生产环境中,系统会在你意想不到的时间、以你意想不到的方式出现问题。当凌晨三点,告警短信将你…

张小明 2026/1/11 20:20:49 网站建设

中国空间站合作国家名单郑州代理记账网站建设

第一章:Open-AutoGLM 操作结果精准验证在部署 Open-AutoGLM 模型后,确保其推理输出的准确性是系统可靠运行的核心前提。验证过程不仅涉及对模型响应的语义正确性评估,还需结合自动化测试框架进行结构化比对。验证环境准备 确保已安装 Python …

张小明 2026/1/11 8:03:23 网站建设

网站布局分析提卡网站怎么做

FaceFusion支持姿态矫正:大角度侧脸也能精准替换 在短视频创作、影视后期和虚拟数字人日益普及的今天,一个长期困扰开发者与内容创作者的问题浮出水面:当人物的脸严重偏向一侧,甚至只露出半张脸时,还能不能实现自然、真…

张小明 2026/1/11 7:05:15 网站建设

网站动态和静态做网站必须有框架么

FFXIVQuickLauncher快速启动器:5分钟提升你的游戏体验 【免费下载链接】FFXIVQuickLauncher Custom launcher for FFXIV 项目地址: https://gitcode.com/GitHub_Trending/ff/FFXIVQuickLauncher 还在为FFXIV官方启动器的缓慢加载而烦恼吗?FFXIVQu…

张小明 2026/1/11 19:35:55 网站建设