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…

VSCode调试C++项目时无法显示长字符串的所有内容

记录一次失败的尝试&#xff0c;参考解决vs code 调试golang时字符串显示不全的问题。_golang gin buf数据不全-CSDN博客 但是笔者当前使用的VSCode版本不支持在launch.json中添加dlvLoadConfig选项 笔者的思路是如果VSCode不支持&#xff0c;那就下降到下一层&#xff0c;VSC…

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

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

判断、v-if判断显示隐藏,功能区循环案例。

判断条件 1.第一种 如果身份是管理员 &#xff0c; 那么全部显示 如果身份是员工 &#xff0c;那么除了value等于1的全部都显示 v-if"( user.state.level admin) || ( user.state.level staff && item.value ! 1)"<view class"funcBox">&…

Solidity Uniswap V2 factory contract

factory contract 工厂合约是所有已部署pair合约的注册表。我们不希望出现相同的pair&#xff0c;这样流动性就不会被分割成多个。factory合约还简化了pair合约的部署&#xff1a;无需手动部署pair合约&#xff0c;只需调用factory合约中的方法即可。 https://github.com/XuHug…

马斯克将在本周,开源类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、根…

2024年备考软考,别犯这些常见错误!

距离2024年上半年软考正式考试还剩不到八十天的时间&#xff0c;留给考生的备考时间越来越少&#xff0c;因此大家在学习时要避免犯一些常见错误&#xff0c;尽量不浪费宝贵的学习时间&#xff0c;科学备考。 误区一&#xff1a;不制定学习计划 不制定学习计划意味着缺乏系统…

Kafka常见使用问题

消息丢失 生产者方&#xff1a;设置ack为1或-1/all可以防止生产的消息丢失&#xff0c;如果要做到生产消息成功率提高到最高&#xff0c;ack设置成all&#xff0c;把min.insync.replicas配置成分区备份数&#xff0c;把ack设置成1或者-1/all&#xff0c;这样生产者生产的消息发…

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…

java 解压gzip json报文

import java.io.*; import java.util.zip.GZIPInputStream;public class GzipJsonParser {public static void main(String[] args) {try {// 读取GZIP压缩的JSON报文FileInputStream fis new FileInputStream("compressed.json.gz");GZIPInputStream gzipInputStre…