Java 2在java.util中新增加了一个叫做Arrays的类。这个类提供了各种在进行数组运算时很有用的方法。尽管这些方法在技术上不属于类集框架,但它们提供了跨越类集和数组的桥梁。在这一节中,分析由Arrays定义的每一种方法。

asList( )方法返回一个被指定数组支持的List。换句话说,列表和数组访问的是同一个元。它具有如下的形式:

static List asList(Object[ ] array)

这里array是包含了数据的数组。
binarySearch( )方法使用二进制搜索寻找指定的值。该方法必须应用于排序数组。它具有如下的形式:

static int binarySearch(byte[ ] array, byte value)
static int binarySearch(char[ ] array, char value)
static int binarySearch(double[ ] array, double value)
static int binarySearch(float[ ] array, float value)
static int binarySearch(int[ ] array, int value)
static int binarySearch(long[ ] array, long value)
static int binarySearch(short[ ] array, short value)
static int binarySearch(Object[ ] array, Object value)
static int binarySearch(Object[ ] array, Object value, Comparator c)

这里,array是被搜索的数组,而value是被查找的值。当array中包含的元素是不可比较的(例如Double和StringBuffer)或者当value与array中的类型不兼容时,后两种形式引发一个ClassCastException异常。

在最后一种形式中,比较函数(Comparator)c用于确定array中的元素的顺序。在所有的形式中,如果array中含有value,则返回该元素的下标。否则,返回一个负值。

当两个数组相等时,equals( )方法返回true;否则返回false。equals( )方法具有下面的一
些形式:

static boolean equals(boolean array1[ ], boolean array2[ ])
static boolean equals(byte array1[ ], byte array2[ ])
static boolean equals(char array1[ ], char array2[ ])
static boolean equals(double array1[ ], double array2[ ])
static boolean equals(float array1[ ], float array2[ ])
static boolean equals(int array1[ ], int array2[ ])
static boolean equals(long array1[ ], long array2[ ])
static boolean equals(short array1[ ], short array2[ ])
static boolean equals(Object array1[ ], Object array2[ ])

这里array1和array2是两个用来比较看是否相等的数组。
fill( )方法将一个值赋给数组中的所有元素。换句话说,它用一个指定的值填充数组。
fill( )方法有两种形式。第一种形式具有下面的一些形式,填充整个数组:

static void fill(boolean array[ ], boolean value)
static void fill(byte array[ ], byte value)
static void fill(char array[ ], char value)
static void fill(double array[ ], double value)
static void fill(float array[ ], float value)
static void fill(int array[ ], int value)
static void fill(long array[ ], long value)
static void fill(short array[ ], short value)
static void fill(Object array[ ], Object value)

这里value被赋给数组array中的每一个元素。
fill( )方法的第二种形式将一个值赋给数组的一个子集。它的几种形式如下:

static void fill(boolean array[ ], int start, int end, boolean value)
static void fill(byte array[ ], int start, int end, byte value)
static void fill(char array[ ], int start, int end, char value)
static void fill(double array[ ], int start, int end, double value)
static void fill(float array[ ], int start, int end, float value)
static void fill(int array[ ], int start, int end, int value)
static void fill(long array[ ], int start, int end, long value)
static void fill(short array[ ], int start, int end, short value)
static void fill(Object array[ ], int start, int end, Object value)

这里,value是赋给数组array中从start开始到end–1结束的子集的值。这些方法当start大 于end时,都能引发一个IllegalArgumentException异常;而当start或end出界时,都能引发一个ArrayIndexOutOfBoundsException异常。

sort( )方法对数组进行排序,以便数组能够按升序进行排列。sort( )方法有两种形式。

下面给出的第一种形式对整个数组进行排序:

static void sort(byte array[ ])
static void sort(char array[ ])
static void sort(double array[ ])
static void sort(float array[ ])
static void sort(int array[ ])
static void sort(long array[ ])
static void sort(short array[ ])
static void sort(Object array[ ])
static void sort(Object array[ ], Comparator c)

这里,array是被排序的数组。在最后的一种形式中,c是一个用来规定array中元素顺序的比较函数(Comparator)。当用于排序的数组中的元素不可比较时,这些对Object的数组进行排序的sort( )方法将引发一个ClassCastException异常。

sort( )方法的第二种形式允许在一个数组内,指定一个想要进行排序的范围。它的具体形式如下:

static void sort(byte array[ ], int start, int end)
static void sort(char array[ ], int start, int end)
static void sort(double array[ ], int start, int end)
static void sort(float array[ ], int start, int end)
static void sort(int array[ ], int start, int end)
static void sort(long array[ ], int start, int end)
static void sort(short array[ ], int start, int end)
static void sort(Object array[ ], int start, int end)
static void sort(Object array[ ], int start, int end, Comparator c)

这里,数组中想要进行排序的范围从start到end–1。在最后一种形式中,c是一个用来规定array中元素顺序的Comparator。

如start大于end,所有这些方法都能引发一个IllegalArgumentException 异常;
而当 start 或 end 出界时,又都能引发一个ArrayIndexOutOfBoundsException异常;
最后两种形式也能引发一个ClassCastException异常。

下面的程序举例说明了如何使用Arrays类中的一些方法:

// Demonstrate Arrays
import java.util.*;
class ArraysDemo { public static void main(String args[]) { // allocate and initialize array int array[] = new int[10]; for(int i = 0; i < 10; i++) array[i] = -3 * i; // display, sort, display System.out.print("Original contents: "); display(array); Arrays.sort(array); System.out.print("Sorted: "); display(array); // fill and display Arrays.fill(array, 2, 6, -1); System.out.print("After fill(): "); display(array); // sort and display Arrays.sort(array); System.out.print("After sorting again: "); display(array); // binary search for -9 System.out.print("The value -9 is at location "); int index = Arrays.binarySearch(array, -9); System.out.println(index); } static void display(int array[]) { for(int i = 0; i < array.length; i++) System.out.print(array[i] + " "); System.out.println(""); }
} 

下面是该程序的输出结果:

Original contents: 0 -3 -6 -9 -12 -15 -18 -21 -24 -27
Sorted: -27 -24 -21 -18 -15 -12 -9 -6 -3 0
After fill(): -27 -24 -1 -1 -1 -1 -9 -6 -3 0
After sorting again: -27 -24 -9 -6 -3 -1 -1 -1 -1 0
The value -9 is at location 2

开课吧Java教程之什么是Arrays相关推荐

  1. 开课吧Java教程:如何用listFiles()方法

    Java 2增加了list( )方法的一个变化形式,名为listFiles( ),你会发现该方法很有用. listFiles( )形式如下: File[ ] listFiles( ) File[ ] ...

  2. 开课吧Java教程什么是类集接口

    类集框架定义了几个接口.本节对每一个接口都进行了概述.首先讨论类集接口是因为它们决定了collection类的基本特性.不同的是,具体类仅仅是提供了标准接口的不同实现.支持类集的接口总结在如下的表中: ...

  3. Katas编写的Java教程:Mars Rover

    编程kata是一种练习,可以帮助程序员通过练习和重复练习来磨练自己的技能. 本文是" 通过Katas进行Java教程 "系列的一部分. 本文假定读者已经具有Java的经验,熟悉单元 ...

  4. java hibernate 插入数据_[Java教程]hibernate 返回新插入数据的Id

    [Java教程]hibernate 返回新插入数据的Id 0 2015-08-28 10:00:11 例如 表明 studentInfoString sql="set set nocount ...

  5. js 如何将java list集合转换成var类型数组_零基础参加郑州Java培训 一定要注意Arrays.asList的用法...

    作为编程界的老大哥,Java一直是想要加入互联网行业的人的首选.为了能够更快更好地入行,很多零基础学员选择参加郑州Java培训班,跟着老师的脚步由浅入深的学习专业技术.今天千锋郑州小编就给大家分享使用 ...

  6. java核心教程_核心Java教程

    java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...

  7. 黑马全套Java教程(八):集合进阶

    文章目录 31 集合进阶 31.1 Collection集合 Iterator迭代器 31.2 List集合 1. ListIterator 2. 增强for循环 31.3 数据结构 1. 栈 2. ...

  8. C C++基础的Java教程

    C C++基础的Java教程 之前学过C和C++,现在需要学java,感觉零基础的java教程太长太简单了,很想找一个C基础的java教程,但是没有找到特别好的-自己学菜鸟教程的时候就顺便总结了一下. ...

  9. 黑马全套Java教程(十一)

    文章目录 40 反射 40.1 单元测试 40.2 反射 40.3 注解 40.4 动态代理 41 XML 41.1 XML 41.2 XML解析技术 41.3 XPath 41.4 设计模式 总结 ...

最新文章

  1. linux c 消息队列简介
  2. 不能用 + 拼接字符串? 这次我要吊打面试官!
  3. linux与shell编程指南,LINUX与UNIX SHELL编程指南
  4. 手机web——自适应网页设计(html/css控制) - 51CTO.COM
  5. Android -- PullToRefresh应用
  6. 【站点部署】解析二级域名并部署站点
  7. jqgrid mysql 分页_jQgrid 分页显示
  8. linux fflush函数,fflush - wwliu的个人页面 - OSCHINA - 中文开源技术交流社区
  9. 【今日CV 计算机视觉论文速览 第110期】Thu, 2 May 2019
  10. opencv threshold_OpenCV-Python 立体图像的深度图 | 五十二
  11. hadoop安全模式
  12. bootstrap 生日选择_bootstrap的datetimepicker只选择月份
  13. 小牛485通讯原理_让你秒懂智能电表工作原理及抄表原理
  14. Java基础学习总结(55)——java8新特性:stream
  15. 1月16日学习内容整理:爬虫框架:Scrapy
  16. 腾讯推出产业版地图WeMap,“一张图”破局五大行业场景
  17. Atitit 组织软资产建设 知识管理 经济学架构体系
  18. ELDD Chapter 2..3 Linux Kernel Facilities
  19. 暴雪:星际2仍在审批 筹划中国电竞联赛
  20. java习题5参考练习及答案_JAVA练习题(第5章).ppt

热门文章

  1. [转载] 【数据处理】 python 极速极简画图——频数(率)分布直方图
  2. MATLAB函数 zp2tf详解
  3. mysql的学习笔记(六)
  4. java程序设计题库
  5. 通过一个月时间字段分组
  6. (转)Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义
  7. android重要的对象
  8. Linux安装卸载Mysql数据库
  9. Android功能点(一)——判断网络是否真正连通
  10. 6个部件组成一个圆球_怎样找一个好月嫂?这6个问题一问便知!