Java Day7 常用API

文章目录

  • 1、Arrays
    • 1.1 简述
    • 1.2 如何比较对象数组
      • 1.2.1 方法1.
      • 1.2.2 方式2
  • 2、Lambda
  • 3、方法引用
    • 3.1 静态方法的引用
    • 3.2 实例方法引用
    • 3.3 特定类型方法引用
    • 3.4 构造器引用

1、Arrays

1.1 简述

操作数组的一个工具类
在这里插入图片描述

常见方法

int[] arr={10,20,30,50,40};//将 数组的内容 组装成一个String对象  格式[,,,]String s = Arrays.toString(arr);
System.out.println(s);//[10, 20, 30, 50, 40]
//将 [Start,End] 范围内的数组复制给一个新的数组
int[] newarr = Arrays.copyOfRange(arr, 1, 4);      System.out.println(Arrays.toString(newarr));//[20, 30, 50]
//将全部数组copy给一个新数组,并且能重新定义数组长度
int[] newarr1 = Arrays.copyOf(arr, 8);           System.out.println(Arrays.toString(newarr1));//[10, 20, 30, 50, 40, 0, 0, 0]
//比较 sort 默认升序
Arrays.sort(arr);                System.out.println(Arrays.toString(arr));//[10, 20, 30, 40, 50]
//把数组中的数据改为新数据再存进去
double[] arr1={100,100.8,50};
Arrays.setAll(arr1,new IntToDoubleFunction(){@Overridepublic double applyAsDouble(int value) {return arr1[value]*0.8;  //每个*0.8}
});              System.out.println(Arrays.toString(arr1)); //[80.0, 80.64, 40.0]

1.2 如何比较对象数组

比如 有一个学生类 包含姓名,身高,年龄,如果我们直接使用sort 对该学生数组排序 会出现错误。

两种方法
在这里插入图片描述

1.2.1 方法1.

让类的对象实现Comparable接口 重写compareTo方法

Student 类

package com.cky.mathclass;public class Student implements Comparable<Student>{private  String name;private double height;private int age;public Student(String name, double height, int age) {this.name = name;this.height = height;this.age = age;}public Student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic int compareTo(Student o) {//这里根据年龄排序//this 0  this>0 正整数 this<0 负整数 this=o  0return this.age-o.age; //升序//return o.age-this.age//降序}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", height=" + height +", age=" + age +'}';}
}
System.out.println(Arrays.toString(arr1)); //[80.0, 80.64, 40.0]
Student[] students=new Student[3];
students[0]=new Student("cui",165,24);
students[1]=new Student("jiang",182,24);
students[2]=new Student("chu",167,23);
//方式1 在类中实现Comparable接口 重写compareTo方法
Arrays.sort(students);
System.out.println(Arrays.toString(students));
//[Student{name='chu', height=167.0, age=23}, Student{name='cui', height=165.0, age=24}, Student{name='jiang', height=182.0, age=24}]

1.2.2 方式2

//方式2 Comparator匿名内部类
Arrays.sort(students, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {//这里根据身高排序//注意 我们返回的需要是整数 不能直接   //return o1.getHeight()-o2.getHeight();  
//if(o1.getHeight()>o2.getHeight())
//            return  1;
//  else if(o1.getHeight()<o2.getHeight())
//             return -1;
//   return 0;//也可以   与上边的if语句一样 内部实现了
return Double.compare(o1.getHeight(),o2.getHeight());
}});

2、Lambda

在这里插入图片描述

jak8新特性
lambda 用于简化匿名内部类的书写
重点:只能简化函数式接口匿名内部类的书写
函数式接口:只有一个方法的接口
格式:
(被重写方法的形参)->{方法体};
如上边的setall
IntToDoubleFunction()是一个函数式接口
函数式接口 我们可以在其上边添加上
@FunctionalInterface 注解

Arrays.setAll(arr1,new IntToDoubleFunction(){@Overridepublic double applyAsDouble(int value) {return arr1[value]*0.8;  //每个*0.8}
});    
  Arrays.setAll(arr1,(int value) ->{return arr1[value]*0.8;  //每个*0.8});

其他简化形式:

在这里插入图片描述

Arrays.setAll(arr1, value->{return arr1[value]*0.8;  //每个*0.8});

最简格式:

Arrays.setAll(arr1,value-> arr1[value]*0.8); //每个*0.8

3、方法引用

package com.cky.mathclass;public class Compareclass {public  static int Comarebydate(Student o1,Student o2){return o1.getAge()-o2.getAge();}public  int Comarebydatedecs(Student o1,Student o2){return o2.getAge()-o1.getAge();}
}

3.1 静态方法的引用

在这里插入图片描述

    Arrays.sort(students, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return o1.getAge()-o2.getAge();}});
//Arrays.sort(students, (o1, o2) ->Compareclass.Comarebydate(o1,o2));
Arrays.sort(students, Compareclass::Comarebydate);}

3.2 实例方法引用

在这里插入图片描述

 Arrays.sort(students, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return o2.getAge()-o1.getAge();}});Compareclass compareclass=new Compareclass();
Arrays.sort(students, (o1,  o2) -> compareclass.Comarebydatedecs(o1,o2));
//最终简化
Arrays.sort(students, compareclass::Comarebydatedecs);

3.3 特定类型方法引用

在这里插入图片描述

String[] names={"Anny","anbs","Cabd","Bsad","bsa"};Arrays.sort(names);            System.out.println(Arrays.toString(names));//[Anny, Bsad, Cabd, anbs, bsa]
//我们想要的是 忽略大小写
Arrays.sort(names, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {
return o1.compareToIgnoreCase(o2);}});
System.out.println(Arrays.toString(names));//[anbs, Anny, bsa, Bsad, Cabd]
//简化              Arrays.sort(names,String::compareToIgnoreCase);
System.out.println(Arrays.toString(names));

3.4 构造器引用

在这里插入图片描述

package com.cky.mathclass;public class Car {private String name;private double price;public Car(String name, double price) {this.name = name;this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}@Overridepublic String toString() {return "Car{" +"name='" + name + '\'' +", price=" + price +'}';}public void setPrice(double price) {this.price = price;}public Car() {}
}

public class Dateclass {public static void main(String[] args) {Carable c=new Carable(){@Overridepublic Car ceateCar(String name, double price) {return new Car(name,price);}};Carable c1=(name, price)-> new Car(name,price);Carable c2=Car::new;System.out.println(c2.ceateCar("ni", 1000000));}}
@FunctionalInterface
interface Carable{Car ceateCar(String name,double price);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

彩色gif闪图怎么做?分享gif动画的方法

在现在的媒体时代&#xff0c;动态图片已经成为了最流行的分享信息的方式。能够传达动态的视觉效果。那种带有动态效果的闪动文字图片要怎么制作呢&#xff1f;很简单&#xff0c;通过使用在线制作闪字图片工具&#xff0c;上传多张文字内容相同&#xff0c;颜色、位置不同的jp…

【网络原理】使用Java基于TCP搭建简单客户端与服务器通信

目录 &#x1f384;API介绍&#x1f338;ServerSocket API&#x1f338;Socket API &#x1f340;TCP中的长短连接&#x1f333;建立TCP回显客户端与服务器&#x1f338;TCP搭建服务器&#x1f338;TCP搭建客户端 ⭕总结 TCP服务器与客户端的搭建需要借助以下API &#x1f384;…

C语言函数—库函数

函数是什么&#xff1f; 数学中我们常见到函数的概念。但是你了解C语言中的函数吗&#xff1f; 维基百科中对函数的定义&#xff1a;子程序 在计算机科学中&#xff0c;子程序&#xff08;英语&#xff1a;Subroutine, procedure, function, routine, method, subprogram, ca…

c++初阶------类和对象(下)

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

马斯克将在本周,开源类ChatGPT产品Grok

3月11日晚&#xff0c;马斯克在社交平台宣布&#xff0c;将在本周开源生成式AI产品——Grok。 Grok是马斯克旗下公司xAI在去年11月发布的&#xff0c;一款类ChatGPT产品&#xff0c;可以提供生成文本、代码、邮件、信息检索等功能。其测试性能超过GPT-3.5、LLaMA 2 70B&#x…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的铁轨缺陷检测系统(Python+PySide6界面+训练代码)

摘要&#xff1a;开发铁轨缺陷检测系统对于物流行业、制造业具有重要作用。本篇博客详细介绍了如何运用深度学习构建一个铁轨缺陷检测系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&#xff0c;展示了不同模…

Linux运维:深入了解 Linux 目录结构

Linux运维&#xff1a;深入了解 Linux 目录结构 一、 Linux 目录结构与 Windows之间的主要区别二、Linux根目录结构三、常见目录及其作用 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 一、 Linux 目录结构与 Windows之间的主要区别 1、根…

vivado clock ip核的使用

clock 偶数倍分频就是进行计数器计数&#xff0c;奇数倍分频如果不要求占空比的话也是进行计数&#xff0c;如果要求0.5的占空比的话&#xff0c;则需要进行两个计数器&#xff0c; 对于实现占空比为50%的N倍奇数分频&#xff0c;我们可以分解为两个通道&#xff1a; 上升沿触…

数据拯救指南:解决文件或目录损坏且无法读取的终极策略

在日常的计算机使用中&#xff0c;我们经常会遇到文件或目录损坏且无法读取的困扰。当这类问题发生时&#xff0c;无论是重要的文档、照片还是视频文件&#xff0c;都可能会变得无法访问&#xff0c;给我们的工作和生活带来极大的不便。面对这种情况&#xff0c;我们首先需要了…

落地灯哪个牌子好?五款品质可靠的落地灯,各具亮点

近年来&#xff0c;落地灯作为最适合目前用眼人群使用的照明电器&#xff0c;以显著的照明效果获得了广泛认可&#xff0c;并成为众多学生党、上班族用眼时的必备工具。其受欢迎的程度不断攀升&#xff0c;促使越来越多的人都选择入手落地灯。然而&#xff0c;我发现市场上也有…

关于JSP的打印调试,再来一篇巩固巩固

JSP实质上就是html混入了Java&#xff0c;或者说是HTMLJavaScriptCSSJava的混合⽂件&#xff0c;那么就会牵扯到各种语言之间的变量引用问题&#xff0c;既然基础是html&#xff0c;那么就先看看html怎么引用其他内容&#xff0c;以及其他内容间值的互引用。 1、Html获取JavaS…

数据结构之栈详解(C语言手撕)

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f648;个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…

HYBBS 表白墙网站PHP程序源码,支持封装成APP

PHP表白墙网站源码&#xff0c;适用于校园内或校区间使用&#xff0c;同时支持封装成APP。告别使用QQ空间的表白墙。 简单安装&#xff0c;只需PHP版本5.6以上即可。 通过上传程序进行安装&#xff0c;并设置账号密码&#xff0c;登录后台后切换模板&#xff0c;适配手机和PC…

如何在Linux本地搭建Tale网站并实现无公网ip远程访问

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale&#xff0c;Tale…

JMeter 二次开发之环境准备

通过JMeter二次开发&#xff0c;可以充分发挥JMeter的潜力&#xff0c;定制化和扩展工具的能力以满足具体需求。无论是开发自定义插件、函数二次开发还是定制UI&#xff0c;深入学习和掌握JMeter的二次开发技术&#xff0c;将为接口功能测试/接口性能测试工作带来更多的便利和效…

【Linux/OS学习】基础文件控制/IO——内存文件

文章目录 一、 基础文件控制1.1 系统接口open函数1.2 Linux中文件描述符1.2 C语言FILE中的文件描述符 二、重定向1. 输出重定向2. 追加重定向3. 输入重定向 tips:fd的分配规则 一个文件要有一个唯一的文件标识&#xff0c;以便用户识别和引用。 文件名包含3部分&#xff1a;文件…

进电子厂了,感触颇多...

作者&#xff1a;三哥 个人网站&#xff1a;https://j3code.cn 本文已收录到语雀&#xff1a;https://www.yuque.com/j3code/me-public-note/lpgzm6y2nv9iw8ec 是的&#xff0c;真进电子厂了&#xff0c;但主人公不是我。 虽然我不是主人公&#xff0c;但是我经历的过程是和主…

jdk1.8下载与安装 图文版

JDK下载 首先在Oracle官网上下载jdk1.8.https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html,如下图所示&#xff0c;找到jdk1.8,选择对应的版本 或者 链接&#xff1a;https://pan.baidu.com/s/13lZy7JKE1xn-dXx_VG1QFA?pwd29wl 提取码&#xff1a;…

谷歌承认“窃取”OpenAI模型关键信息

什么&#xff1f;谷歌成功偷家OpenAI&#xff0c;还窃取到了gpt-3.5-turbo关键信息&#xff1f;&#xff1f;&#xff1f; 是的&#xff0c;你没看错。 根据谷歌自己的说法&#xff0c;它不仅还原了OpenAI大模型的整个投影矩阵&#xff08;projection matrix&#xff09;&…

Redis高可用之哨兵模式和集群模式

Redis高可用 Redis哨兵高可用 概述 sentinel哨兵是特殊的redis服务&#xff0c;不提供读写服务&#xff0c;主要用来监控redis实例节点。 哨兵架构下client端第一次从哨兵找出redis的主节点&#xff0c;后续就直接访问redis的主节点 不会每次都通过sentinel代理访问redis的主…