当前位置: 首页 > news >正文

Arrays类

Arrays类位于 java.util 包中,主要包含了操作数组的各种方法。
    int[] arr = new int[5];//新建一个大小为5的数组Arrays.fill(arr,4);//给所有值赋值4String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来System.out.print(str);//输出:[4, 4, 4, 4, 4]
	int[] arr = new int[5];//新建一个大小为5的数组Arrays.fill(arr, 2,4,6);//给第2位(0开始)到第4位(不包括)赋值6String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来System.out.print(str);//输出:[0, 0, 6, 6, 0]
Arrays.equals(); //比较数组元素是否相等
	int[] arr1 = {1,2,3};int[] arr2 = {1,2,3};System.out.println(Arrays.equals(arr1,arr2));//输出:true//如果是arr1.equals(arr2),则返回false,因为equals比较的是两个对象的地址,不是里面的数,而Arrays.equals重写了equals,所以,这里能比较元素是否相等。
Arrays.copeOf() 和Arrays.copeOfRange(); //截取数组
	int[] arr = {10,20,30,40,50};int[] arr1 = Arrays.copyOf(arr, 3);String str = Arrays.toString(arr1); // Arrays类的toString()方法能将数组中的内容全部打印出来System.out.print(str);//输出:[10, 20, 30] (截取arr数组的3个元素赋值给新数组arr1)
	int []arr = {10,20,30,40,50};int []arr1 = Arrays.copyOfRange(arr,1,3);String str = Arrays.toString(arr1); // Arrays类的toString()方法能将数组中的内容全部打印出来System.out.print(str);//输出:[20, 30] (从第1位(0开始)截取到第3位(不包括))
Arrays.binarySearch (arr, 元素)方法

对有序数组,通过二分法,搜索有没有某个元素。(无序数组不能使用)

上面有一个拘束,就是排列顺序只能是从小到大,如果我们要从大到小,就要使用这种方式

使用比较器(comparator)作为sort的参数(用于单个类型的排序)
package test;import java.util.Arrays;
import java.util.Comparator;public class Main {public static void main(String[] args) {//注意,要想改变默认的排列顺序,不能使用基本类型(int,double, char)//而要使用它们对应的类Integer[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};//定义一个自定义类MyComparator的对象Comparator cmp = new MyComparator();Arrays.sort(a, cmp);for(int i = 0; i < a.length; i ++) {// int b =Integer.intValue();会自动拆箱System.out.print(a[i] + " ");}}
}
//Comparator是一个接口,所以这里我们自己定义的类MyComparator要implents该接口
//而不是extends Comparator
class MyComparator implements Comparator<Integer>{@Overridepublic int compare(Integer o1, Integer o2) {//如果n1小于n2,我们就返回正值,如果n1大于n2我们就返回负值,//这样颠倒一下,就可以实现反向排序了if(o1 < o2) { return 1;}else if(o1 > o2) {return -1;}else {return 0;}}}
主要:如果是要实现对象的排序,则需要用到实现Comparable接口(用于类之间的排序)。

假设有Employee类,有name和salary字段,

需要实现Comparable接口:

public int compareTo(Object otherObject)
{Employee other = (Employee) otherObject;return Double.compare(salary, other.salary);
}
import java.util.Arrays;
public class Test {public static void main(String[] args) {Employee[] staff = new Employee[5];staff[0] = new Employee("Harry Hacker", 35000);staff[1] = new Employee("Carl Cracker", 75000);staff[2] = new Employee("Tony Tester", 38000);staff[3] = new Employee("Tony Bool", 48000);staff[4] = new Employee("June Bo", 48001);Arrays.sort(staff);// print out information about all Employee objectsfor (Employee e : staff) {System.out.println("name=" + e.getName() + " , salary=" + e.getSalary());}}
}

name=Harry Hacker , salary=35000.0
name=Tony Tester , salary=38000.0
name=Tony Bool , salary=48000.0
name=June Bo , salary=48001.0
name=Carl Cracker , salary=75000.0
 

http://www.lryc.cn/news/123308.html

相关文章:

  • lua ipairs pairs
  • swift3.0 废弃 swift 4.0 以后字符串截取
  • 休息是不可能休息的
  • Java面向对象(内部类)(枚举)(泛型)
  • macOS - 安装 GNU make、cmake
  • vue中style scoped属性的作用
  • 【ARM 嵌入式 编译系列 10.2 -- 符号表与可执行程序分离详细讲解】
  • Gin各种参数接收
  • 【Python】进阶之 MySQL入门教程
  • Word 2019打开.doc文档后图片和公式不显示(呈现为白框)的解决办法
  • 三个整数排序
  • Nginx反向代理出现错误 502 bad gateway 案例解析
  • 截止到目前全量主体总数有多少?
  • HTTP--Request详解
  • Linux C++ 网络编程基础(2) : TCP多线程一个server对应多个client
  • 如何构建一个 NodeJS 影院微服务并使用 Docker 部署
  • BEVFusion(ICRA-2023)--01
  • Java——Iterator迭代器
  • GCC编译过程:预处理->编译->汇编->链接
  • JVM笔记 —— 出现内存溢出错误时时如何排查
  • 多级嵌套引入组件导致Vue提示子组件未注册问题
  • vue3+element-plus组件下拉列表,数组数据转成树形数据
  • 【kubernetes】调度约束
  • 【深度学习MOT】SMILEtrack SiMIlarity LEarning for Multiple Object Tracking,论文
  • jmeter通过BeanShell对接口参数进行MD5和HmacSHA256加密【杭州多测师_王sir】
  • 基于自适应曲线阈值和非局部稀疏正则化的压缩感知图像复原研究【自适应曲线阈值去除加性稳态白/有色高斯噪声】(Matlab代码实现)
  • Spring AOP 切点表达式
  • 打破传统直播,最新数字化升级3DVR全景直播
  • 网络安全--利用awk分析Apache日志
  • 计算机视觉一 —— 介绍与环境安装