Java Arrays类

news/2024/11/16 14:37:22/

Arrays类

介绍

用于管理或操作数组(比如排序和搜索)

常用方法

1、Arrays.toString(ints):返回数组的字符串形式

int[] ints = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(ints));

2、sort排序(自然排序和定制排序)

import java.util.Arrays;
import java.util.Comparator;public class Array01 {public static void main(String[] args) {int[] ints = {1, 2, 3, 4, 5};System.out.println(Arrays.toString(ints));Integer[] arr = {-1, -2, 12};Arrays.sort(arr);System.out.println(Arrays.toString(arr));Arrays.sort(arr, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2 - o1;}});System.out.println(Arrays.toString(arr));}
}
package com.hspedu.arrays_;import java.util.Arrays;
import java.util.Comparator;/*** @author 韩顺平* @version 1.0*/
public class ArraysSortCustom {public static void main(String[] args) {int[] arr = {1, -1, 8, 0, 20};//bubble01(arr);bubble02(arr, new Comparator() {@Overridepublic int compare(Object o1, Object o2) {int i1 = (Integer) o1;int i2 = (Integer) o2;return i2 - i1;// return i2 - i1;}});System.out.println("==定制排序后的情况==");System.out.println(Arrays.toString(arr));}//使用冒泡完成排序public static void bubble01(int[] arr) {int temp = 0;for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - 1 - i; j++) {//从小到大if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}//结合冒泡 + 定制public static void bubble02(int[] arr, Comparator c) {int temp = 0;for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - 1 - i; j++) {//数组排序由 c.compare(arr[j], arr[j + 1])返回的值决定if (c.compare(arr[j], arr[j + 1]) > 0) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}
}

0482_韩顺平Java_Arrays模拟排序_哔哩哔哩_bilibili

binarySearch通过二分搜索法进行查找

要求 arrays 必须排好序,如果数组为无序的,则不能使用binarySearch方法

在使用该方法时,如果查找的元素不在数组中,则返回-(low + 1); 看下面的代码

import java.util.Arrays;public class Array01 {public static void main(String[] args) {int[] ints = {1, 2, 3, 4, 5};int index = Arrays.binarySearch(ints, 122);// 122如果存在于数组中的话,位置应该在 元素5 的后面// return -(low + 1); -->   low在源码中代表元素的位置,从1开始// return -(5 + 1); --> -6System.out.println(index);}
}

copyOf

从arr数组中,拷贝固定长度(从头开始计数)的元素到 数组 中。新建一个数组对象

  • 如果拷贝的长度大于数组的长度,则在新数组后面添加null

  • 如果长度为负数,则抛出异常

int[] ints = {1, 2, 3, 4, 5};
int[] intsCopy = Arrays.copyOf(ints, ints.length-2);
System.out.println(Arrays.toString(intsCopy));

fill

数组填充:将数组中的每个元素都替换成一个元素

int[] ints = {1, 2, 3, 4, 5};
Arrays.fill(ints, 99);
// 输出为  [99, 99, 99, 99, 99]
System.out.println(Arrays.toString(ints));

equals

比较两个数组中的元素是否完全一致(大小和顺序均一致),如果数组元素完全一致,则返回true

int[] ints = {1, 2, 3, 4, 5};
int[] ints2 = {1, 2, 3, 5, 4};
// 输出为:  false 
System.out.println(Arrays.equals(ints, ints2));

asList

将一组值,转换为一个List集合

List asListTest = Arrays.asList("zhang", "cheng");
// 输出为   [zhang, cheng]
System.out.println(asListTest);
// asListTest的编译类型为 List
// asListTest的运行类型为: class java.util.Arrays$ArrayList
System.out.println(asListTest.getClass());

测试题

在这里插入图片描述

import java.util.Arrays;
import java.util.Comparator;public class ArraysTest01 {public void sortBook(Book[] books, Comparator comparator) {for (int i = 0; i < books.length - 1; i++) {for (int j = i + 1; j < books.length; j++) {if (comparator.compare(books[i], books[j]) < 0) {Book temp = books[i];books[i] = books[j];books[j] = temp;}}}}public static void main(String[] args) {Book[] books = new Book[4];books[0] = new Book("红楼梦", 100.43);books[1] = new Book("金瓶梅", 100.45);books[2] = new Book("青年文摘", 5);books[3] = new Book("java入门到放弃", 100.49);ArraysTest01 arraysTest01 = new ArraysTest01();arraysTest01.sortBook(books, new Comparator<Book>() {// Arrays.sort(books, new Comparator<Book>() {@Overridepublic int compare(Book o1, Book o2) {double a = o1.getPrice();double b = o2.getPrice();System.out.println("a:" + a + " b:" + b);System.out.println(Math.floor(a - b));double v = a - b;if (v < 0) {return 1;} else if (v > 0) {return -1;} else {return 0;}}});for (Book book : books) {System.out.println(book);}}}class Book {private String name;private double price;public Book(String name, double price) {this.name = name;this.price = price;}public double getPrice() {return price;}@Overridepublic String toString() {return "Book{" + "name='" + name + '\'' + ", price=" + price + '}';}
}

在这里插入图片描述


http://www.ppmy.cn/news/892774.html

相关文章

【微信小程序创作之路】- 小程序窗口整体配置(导航栏、标题)

【微信小程序创作之路】- 小程序窗口导航栏配置 第五章 微信小程序窗口导航栏配置 文章目录 【微信小程序创作之路】- 小程序窗口导航栏配置前言一、入口文件的配置二、页面配置三、全局默认窗口配置1.navigationBarTitleText&#xff1a;导航栏标题文字2.navigationBarBackgr…

VS2012番茄助手安装破解教程

Visual Assist X 破解版使用步骤 先安装好VS2012 安装番茄助手Visual Assist X前要关掉微软相关所有的软件&#xff0c;比如VS2012或者VC6.0。 步骤一、运行【VA_X_Setup1918.exe】 步骤二、运行【vax_patch.exe】 复制破解补丁vax_patch.exe到Visual Assist的安装目录破解生…

VS下载密钥

VS2010 YCFHQ9DWCYDKV88T2TMHG7BHP 旗舰版下载地址&#xff1a; ed2k://|file|cn_visual_studio_2010_ultimate_x86_dvd_532347.iso|2685982720|4AE6228933DDE49D9BFA4C3467C831C2|/ VS2012 Microsoft Visual Studio Ultimate 2012 旗舰版&#xff0c;有效注册密钥&#xff…

2012 VS密钥

VS2012 正式版在Beta版的基础上进行了很多改进&#xff0c;尤其是加入了全新的用户界面。 VS2012 的硬件需求与VS2010相同&#xff0c;不过由于 Visual Studio 2012 利用了新版 Windows 的核心功能&#xff0c;因此它必须运行在 Win7 以上的操作系统&#xff0c;当然如果你打算…

vs2012 ultimate 密钥

Visual Studio Ultimate 2012 静态激活密钥&#xff0c;可以试一下。  RBCXF-CVBGR-382MK-DFHJ4-C69G8 转载于:https://www.cnblogs.com/soundcode/p/3767081.html

vs2012 express 密钥

Visual Studio Express 2012 for Windows Desktop KEY : MMVJ9-FKY74-W449Y-RB79G-8GJGJ Microsoft Visual Studio Express 2012 for Web KEY :VX3VY-8GCVT-KJQCY-RQ99X-MCF2R Visual Studio Express 2012 for windows 8 YV688-DW39R-JPKH2-6DG4R-HM9JD

VS2012 有效注册密钥(截止到2016/9/27仍有效)

VS2012 有效注册密钥 Microsoft Visual Studio Ultimate 2012 旗舰版 有效注册密钥&#xff1a; YKCW6-BPFPF-BT8C9-7DCTH-QXGWC 原文地址

2012服务器系统密钥,WINDOWS SERVER 2012标准版密钥

js获取浏览器内核、类型、版本以及系统类型 正则表达式: var rsys /\b(windows|win32|macintosh|mac os x|adobeair|linux|unix)\b/; var rkn /\b(opera| ... docker 组件&lpar;c&sol;s&rpar; Docker 组件 1. docker client : docker的客户端 2. docker server :…