初识Java的Arrays类

Arrays类包括很多用于操作数组的静态方法(例如排序和搜索),且静态方法可以通过类名Arrays直接调用。用之前需要导入Arrays类:

 import java.util.Arrays;

本篇记录几个基础的对基本数据类型的操作,后续等待技术精进,再进行补充。

二分查找

  • public static int binarySearch(type[]a,type key)
int[] a = {1,2,3,4};
System.out.println(Arrays.binarySearch(a,1));//输出0 即1的索引值
System.out.println(Arrays.binarySearch(a,7));//输出-1 找不到就负数

二分法查找key在a数组中的索引值,找不到就返回负数;需要数组按升序排列。

  • public static int binarySearch(type[]a,int fromIndex,int toIndex,type key)
int[] b = {5,6,7,8};
System.out.println(Arrays.binarySearch(b,0,3,6));//返回1 b中0-3里有6就返回6的索引
System.out.println(Arrays.binarySearch(b,0,3,9));//返回负数 b中0-3里没有9,返回负数
System.out.println(Arrays.binarySearch(b,0,4,8));//返回3 不包括索引为4的值
System.out.println(Arrays.binarySearch(b,0,5,8));//报错,超出范围

类似法一,但是搜索fromIndex到toIndex的索引值(不包括toIndex),索引范围需要注意。

数组拷贝

  • public static type[] copyOf(type[] original,int length)
int[] a = {1,2,3,4};
int[] c = Arrays.copyOf(a,5);
int[] d = Arrays.copyOf(a,3);
for(int m:d) System.out.print(m);//123
for(int m:c) System.out.print(m);//12340
String[] b = Arrays.copyOf(a,4)//报错,类型不符

把original数组复制成一个新的数组,length是新数组的长度,三种情况:

  1. length>original.length,多的部分整数类型补0,引用类型补null,布尔类型补false。
  2. length==original.length,刚好复制。
  3. length<original.length,就复制前length长的元素。
  • public static type[] copyOfRange(type[]original,int from,int to)
int[] a ={1,2,3,4,5};
int[] b =Arrays.copyOfRange(a,1,3);
int[] c = Arrays.copyOfRange(a,0,6);
System.out.println(Arrays.toString(b));//[2,3]
System.out.println(Arrays.toString(c));//[1,2,3,4,5,0]

类似,只复制original数组的from索引到to索引的元素。

转为字符串

  • public static String toString(type[]a)
char[]b = {'a','b','c'};
System.out.println(Arrays.toString(b));//[a,b,c]

将数组转换成字符串类型,用逗号和空格把数组元素按顺序隔开。

数组填充

  • public static void fill(type[]a,type val)
String[] stringArray = new String[3];
Arrays.fill(stringArray,"he");
System.out.println(Arrays.toString(stringArray));//[he,he,he]

把a数组的所有元素用val填充.

  • public static void fill(type[]a,int fromIndex,int toIndex,type val)
String[] stringArray = {"he","he","he"};
Arrays.fill(stringArray,0,1,"m");
System.out.println(Arrays.toString(stringArray));//[m,he,he]

把fromIndex到toIndex的元素用val填充,填充到toIndex的前一个数为止(不包括toIndex)。

数组比较

  • public static boolean equals(type[]a,type[]a2)
int[] a = {5,6,7,8};
int[] b = {5,6,7,8};
int[] c = {5,6,7};
System.out.println(Arrays.equals(a, b));//true
System.out.println(Arrays.equals(a, c));//false

如果a数组和a2数组的长度相等且里面的元素也都相同,返回true。

数组排序

  • public static void sort(type[] a)
char[] d = {'d','a','c','b'};
Arrays.sort(d);
System.out.println(Arrays.toString(d));//[a,b,c,d]

将原数组按照升序的顺序排列。

  • public static void sort(type[]a,int fromIndex,int toIndex)
int[] a ={3,1,2,4};
Arrays.sort(a,0,2);
System.out.println(Arrays.toString(a));//[1,3,2,4]

将原数组按照升序的顺序,在fromIndex到toIndex的范围内排列,到toIndex之前的数为止(不包括toIndex)。

综上:

  • 数组类型与元素类型一定要匹配,数组之间的操作也需要匹配类型。
  • fromIndex一定小于等于toIndex。
  • fromIndex需要大于零。
  • toIndex需要小于数组的长度。

Java的Arrays类 基本用法的更多相关文章

  1. JDK1.8源码(四)——java.util.Arrays 类

    java.util.Arrays 类是 JDK 提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名Arrays调用. 1.asList public static ...

  2. java的Arrays类的应用

    (2012-08-01 14:48:27) 转载▼ 标签: java arrays类 填充 排序 查找 比较数组 分类: java基础 java.util.Arrays类能方便地操作数组,它提供的所有 ...

  3. java.util.Arrays类

    前言:java.util.Arrays类的技术文档请查看Oracle官网 1.Arrays类常见方法: 本文参考资料:百度文库:Oracle官网:第三方中文技术文档

  4. java.util.Arrays类详解(源码总结)

    概述 Arrays类位于java.util包下,是一个对数组操作的工具类.今天详细的看了看Arrays类的4千多行源码,现将Arrays类中的方法做一个总结(JDK版本:1.6.0_34).Array ...

  5. java基础-Arrays类常用方法介绍

    java基础-Arrays类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Array类的概念 此类包含用来操作数组(比如排序和搜索)的各种方法.需要注意,如果指定 ...

  6. Java中Class类及用法

    Java中Class类及用法 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI.这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确方 ...

  7. [19/03/12-星期二] 数组_遍历(for-each)&复制&java.util.Arrays类

    一.遍历 for-each即增强for循环,是JDK1.5新增加的功能,专门用于读取数组或集合中所有的元素,即对数组进行遍历. //数组遍历 for-each public class Test_03 ...

  8. java中Arrays类的应用

    java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的.具有以下功能: ² 给数组赋值:通过fill方法. ² 对数组排序:通过sort方法,按升序. ² 比较数组:通过equ ...

  9. Java中数组操作 java.util.Arrays 类常用方法的使用

    任何一门编程语言,数组都是最重要和常用的数据结构之一,但不同的语言对数组的构造与处理是不尽相同的. Java中提供了java.util.Arrays 类能方便地操作数组,并且它提供的所有方法都是静态的 ...

随机推荐

  1. 用Python编写简单的发红包程序和计算器原理

    用Python编写简单的发红包程序: 第一种解法:数轴方法解决 import random def red_packet(money,num): money = money * 100 #将钱数转换成 ...

  2. Java开发中的23中设计模式详解(一)工厂方法模式和抽象工厂模式

    一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接 ...

  3. os模块操作文件

    os模块: path=os.path.join(os.path.dirname(os.path.dirname(__file__)),'images') path:运行脚本的当前文件下的上一个文件的地 ...

  4. 复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符及在vim中设置tab缩进为4个字符

    1.复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符 在命令模式下,使用正则表达式匹配 行首有空白字符行的模式:^[[:space:]] ...

  5. java.io.StreamCorruptedException: invalid stream header: 00000000

    Caused by: java.io.StreamCorruptedException: invalid stream header: 00000000 at java.io.ObjectInputS ...

  6. Apache的虚拟主机功能

    Apache的虚拟主机功能 (Virtual Host) 是可以让一台服务器基于IP.主机名或端口号实现提供多个网站服务的技术. 第一种情况:基于IP地址 这种情况很常见:一台服务器拥有多个IP地址, ...

  7. NOIP 模拟22

    这次考试真的是像教练说的真的挺难的,但是人家rank1还是100+, 但是咕咕蛊!

  8. FastDFS图片服务器单机安装步骤(修订版)

    前面已经讲 一张图秒懂微服务的网络架构,通过此文章可以了解FastDFS组件中单机安装流程. 单机版架构图 以下为单机FastDFS安装步骤 一.环境准备 CentOS 7.X libfastcomm ...

  9. Python实现发送邮件代码

    代码如下: # -*- coding: utf-8 -*- #!/usr/bin/env python # @Time : 2017/12/22 17:50 # @Desc : # @File : m ...

  10. 手写Spring框架,加深对Spring工作机制的理解!

    在我们的日常工作中,经常会用到Spring.Spring Boot.Spring Cloud.Struts.Mybatis.Hibernate等开源框架,有了这些框架的诞生,平时的开发工作量也是变得越 ...