详解 Arrays类
请关注本人博文——《详解 普通数组 —— Arrays类 与 浅克隆》
Arrays类:
概述:
针对数组进行操作的工具类。它提供了对于数组的值的排序、查找等功能。
现在,本人来展示一下Arrays类的常用API:
- public static List asList(T... a)
返回一个受指定数组支持的固定大小的列表。- public static String toString(int[] a)
- public static void sort(int[] a)
- public static int binarySearch(int[] a,int key)
这个方法的底层实现,就运用了二分查找的原理- static boolean equals(int[] a, int[] a2)
比较两个数组中的元素,是否一样- static int[] copyOf(int[] original, int newLength)
复制旧数组中的元素到一个新的数组中,新的数组长度是newLength 从0开始复制旧数组- static int[] copyOfRange(int[] original, int from, int to)
复制旧数组中的指定范围间的几个元素到新数组中
现在,本人来展示下Arrays类的其余API:
- static void sort(八大基本类型[] a)
对指定的 该数组按数字升序进行排序。- static void sort(Object[] a, int fromIndex, int toIndex)
根据元素的自然顺序对指定对象数组的指定范围按升序进行排序。- static < T > List< T > asList(T... a)
返回一个受指定数组支持的固定大小的列表。- static int binarySearch(八大基本类型[] a, 八大基本类型 key)
使用二分搜索法来搜索指定数组,以获得指定的值。- static int binarySearch(八大基本类型[] a, int fromIndex, int toIndex, 八大基本类型 key)
使用二分搜索法来搜索指定数组的范围,以获得指定的值。- static 八大基本类型[] copyOf(八大基本类型[] original, int newLength)
复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。- static T[] copyOf(T[] original, int newLength)
复制指定的数组,截取或用 null 填充(如有必要),以使副本具有指定的长度。- static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType)
复制指定的数组,截取或用 null 填充(如有必要),以使副本具有指定的长度。- static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType)
复制指定的数组,截取或用 null 填充(如有必要),以使副本具有指定的长度。- static 八大基本类型[] copyOfRange(八大基本类型[] original, int from, int to)
将指定数组的指定范围复制到一个新数组。- static T[] copyOfRange(T[] original, int from, int to)
将指定数组的指定范围复制到一个新数组。- static <T,U> T[] copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType)
将指定数组的指定范围复制到一个新数组。- static boolean equals(Object[] a, Object[] a2)
如果两个指定的 Object[] 型数组彼此相等,则返回 true。- static String toString(八大基本类型[] a)
返回指定数组内容的字符串表示形式。
至于排序,在本人的《数据结构与算法》专栏中已经详细的讲解过了,所以,在这里,本人来介绍一下针对数组的查找手段——二分查找:
二分查找:
二分查找是有前提的:
前提:
数组已经排序好
二分查找的思想是:
思想:
将数组分为两半,让要目标值 与 中间的值作比较,比中间数大的话,就在中间数左边的序列中再这样查找;反之则在中间数右边的序列中这样查找
现在,我们来用代码简单实现下 二分查找:
private static int getIndex(int[] arr, int num) {
//定义三个索引
int minIndex = 0;
int maxIndex = arr.length - 1;
int centIndex = (minIndex + maxIndex) / 2;
while (minIndex <= maxIndex) {
if (num == arr[centIndex]) {
return centIndex;
} else if (num < arr[centIndex]) {
maxIndex = centIndex - 1;
} else if (num > arr[centIndex]) {
minIndex = centIndex + 1;
}
//重新计算中间索引
centIndex = (minIndex + maxIndex) / 2;
}
return -1;
}
那么,本人在这里展示下Arrays类的使用:
package about_arrays;
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main(String[] args) {
int[] array = new int[] {1, 3, 5, 7, 9, 11};
List<Integer> list = Arrays.asList(1, 2, 5, 3, 4);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
int position = Arrays.binarySearch(array, 7);
System.out.println("7在array数组中的下标为:" + position);
}
}
那么,本人来展示下运行结果:

至于List,将在本人博文——《详解 List接口》讲到,希望大家多多支持!!!
(本人普通数组总集篇博文链接:https://www.cnblogs.com/codderYouzg/p/12416481.html)
详解 Arrays类的更多相关文章
- unity3D游戏开发之详解Animation类和Animator类
详解Animator类和Animation类 链接: http://wenku.baidu.com/link?url=SiaUYcdrNYjOYrWVDJSKGAYdJOntMTOhsVJtyBk2i ...
- 【python进阶】详解元类及其应用1
前言 元类在python中是很重要的一部分,我将分两次去讲解元类及其应用,此篇为详解元类及其应用第一篇,下面开始今天的说明~~~ 1. 类也是对象 在⼤多数编程语⾔中,类就是⼀组⽤来描述如何⽣成⼀个对 ...
- 【python进阶】详解元类及其应用2
前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...
- Unity3D - 详解Quaternion类(二)
OK,不做引子了,接上篇Unity3D - 详解Quaternion类(一)走起! 四.Quaternion类静态方法 Quaternion中的静态方法有9个即:Angle方法.Dot方法.Euler ...
- Unity3D - 详解Quaternion类(一)
一.简介 Quaternion又称四元数,由x,y,z和w这四个分量组成,是由爱尔兰数学家威廉·卢云·哈密顿在1843年发现的数学概念.四元数的乘法不符合交换律.从明确地角度而言,四元数是复数的不可交 ...
- Kotlin——最详解的类(class)的使用
在任何一门面向对象编程的语言里,类(class)是非常基础.但也是非常重要的一项组成,通俗的说就是万般皆对象,而所说的对象就是我们生成的类.Kotlin也是如此,下面详细为大家介绍Kotlin中的类的 ...
- IOC和AOP使用扩展之AOP详解实现类
摘要: “Depend on yourself” is what nature says to every man. Parents can help you. Teachers can hel ...
- 详解 Collections类
(请关注 本人"集合总集篇"博文--<详解 集合框架>) 有的同学可能会有这样的疑问 -- Collections类也是集合吗? 答曰:非也! 那为什么要讲解这个类呢? ...
- 详解 Paths类 与 Files类
在本篇博文中,本人主要讲解NIO 的两个核心点 -- 缓冲区(Buffer) 和 通道 (Channel)之一的 缓冲区(Buffer), 有关NIO流的其他知识点请观看本人博文<详解 NIO流 ...
随机推荐
- 一起了解 .Net Foundation 项目 No.22
.Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. Windows Templ ...
- 在Keras中可视化LSTM
作者|Praneet Bomma 编译|VK 来源|https://towardsdatascience.com/visualising-lstm-activations-in-keras-b5020 ...
- nltk 获取 gutenberg 语料,gensim 生成词库和 onehot 编码
nltk 获取 gutenberg 语料 gensim 生成词库和 onehot 编码 正在尝试基于 Tensorflow LSTM 模型开发另外一个项目,需要自然语言处理的工具和语料. import ...
- vue 听说你很会传值?
前置 大小 vue 项目都离不开组件通讯, 在这里总结一下vue组件通讯方式并列出, 都是简单的例子. 适合像我这样的小白.如有错误,欢迎指正. 温馨提示: 下文没有列出 vuex, vuex 也是重 ...
- vue-cli 引入axios及跨域使用
使用 cnpm 安装 axios cnpm install axios --save-dev 安装其他插件的时候,可以直接在 main.js 中引入并 Vue.use(),但是 axios 并不能 u ...
- [白话解析] 通俗解析集成学习之bagging,boosting & 随机森林
[白话解析] 通俗解析集成学习之bagging,boosting & 随机森林 0x00 摘要 本文将尽量使用通俗易懂的方式,尽可能不涉及数学公式,而是从整体的思路上来看,运用感性直觉的思考来 ...
- Mac OS安装Go语言及配置VSCode开发环境:一个工具(gopls)解千愁
前言 截止到目前为止,Go语言已经更新到1.14.1,网上的很多教程均已经过时,我在此汇总并整理一下相关的教程,提供一个适合当下的Mac OS教程. 教程中使用了Go在1.11之后推出的依赖包管理工具 ...
- Vertica的这些事(十四)——Vertica实时消费kafka实现
一. 安装环境 Vertica官方提供了消费kafka的方法,需要注意版本对应 消费kafka原理,是Vertica提供的Udx 首先需要安装相应的环境 /${vertica}/packages/ka ...
- node.js模拟学校教务处登录
临近毕业,在做毕设,我的毕设中有一个功能是模拟我学校的教务处登录以获得cookie,本来以为是挺简单的一个功能,但却花了我两天的时间.(我学校教务处用的是湖南强智科技开发的) 在网上搜了大量的模拟登录 ...
- Jmeter压力测试笔记(6)性能调测-压力并发-模拟生产环境数据
问题原因找到了,那就好办了. 找到阿里云技术人员,让他们强行给我们上架了一个共享代理模式的Redis. 并重新进行压力测试. 哦豁~ 开心,压力测试顺利,异常率大大降低实际为: 数据库DBA反馈,数据 ...