请关注本人博文——《详解 普通数组 —— 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)

    返回指定数组内容的字符串表示形式。

至于排序,在本人的《数据结构与算法》专栏中已经详细的讲解过了,所以,在这里,本人来介绍一下针对数组的查找手段——二分查找

二分查找:

二分查找是有前提的:

前提

数组已经排序好

二分查找的思想是:

思想

将数组分为两半,让要目标值 与 中间的值作比较,比中间数大的话,就在中间数左边的序列中再这样查找;反之则在中间数右边的序列中这样查找

现在,我们来用代码简单实现下 二分查找:

  1. private static int getIndex(int[] arr, int num) {
  2. //定义三个索引
  3. int minIndex = 0;
  4. int maxIndex = arr.length - 1;
  5. int centIndex = (minIndex + maxIndex) / 2;
  6. while (minIndex <= maxIndex) {
  7. if (num == arr[centIndex]) {
  8. return centIndex;
  9. } else if (num < arr[centIndex]) {
  10. maxIndex = centIndex - 1;
  11. } else if (num > arr[centIndex]) {
  12. minIndex = centIndex + 1;
  13. }
  14. //重新计算中间索引
  15. centIndex = (minIndex + maxIndex) / 2;
  16. }
  17. return -1;
  18. }

那么,本人在这里展示下Arrays类的使用:

  1. package about_arrays;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. public class Test {
  5. public static void main(String[] args) {
  6. int[] array = new int[] {1, 3, 5, 7, 9, 11};
  7. List<Integer> list = Arrays.asList(1, 2, 5, 3, 4);
  8. for (int i = 0; i < list.size(); i++) {
  9. System.out.println(list.get(i));
  10. }
  11. int position = Arrays.binarySearch(array, 7);
  12. System.out.println("7在array数组中的下标为:" + position);
  13. }
  14. }

那么,本人来展示下运行结果:

至于List,将在本人博文——《详解 List接口》讲到,希望大家多多支持!!!

(本人普通数组总集篇博文链接:https://www.cnblogs.com/codderYouzg/p/12416481.html

详解 Arrays类的更多相关文章

  1. unity3D游戏开发之详解Animation类和Animator类

    详解Animator类和Animation类 链接: http://wenku.baidu.com/link?url=SiaUYcdrNYjOYrWVDJSKGAYdJOntMTOhsVJtyBk2i ...

  2. 【python进阶】详解元类及其应用1

    前言 元类在python中是很重要的一部分,我将分两次去讲解元类及其应用,此篇为详解元类及其应用第一篇,下面开始今天的说明~~~ 1. 类也是对象 在⼤多数编程语⾔中,类就是⼀组⽤来描述如何⽣成⼀个对 ...

  3. 【python进阶】详解元类及其应用2

    前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...

  4. Unity3D - 详解Quaternion类(二)

    OK,不做引子了,接上篇Unity3D - 详解Quaternion类(一)走起! 四.Quaternion类静态方法 Quaternion中的静态方法有9个即:Angle方法.Dot方法.Euler ...

  5. Unity3D - 详解Quaternion类(一)

    一.简介 Quaternion又称四元数,由x,y,z和w这四个分量组成,是由爱尔兰数学家威廉·卢云·哈密顿在1843年发现的数学概念.四元数的乘法不符合交换律.从明确地角度而言,四元数是复数的不可交 ...

  6. Kotlin——最详解的类(class)的使用

    在任何一门面向对象编程的语言里,类(class)是非常基础.但也是非常重要的一项组成,通俗的说就是万般皆对象,而所说的对象就是我们生成的类.Kotlin也是如此,下面详细为大家介绍Kotlin中的类的 ...

  7. IOC和AOP使用扩展之AOP详解实现类

    摘要:   “Depend on yourself” is what nature says to every man.  Parents can help you. Teachers can hel ...

  8. 详解 Collections类

    (请关注 本人"集合总集篇"博文--<详解 集合框架>) 有的同学可能会有这样的疑问 -- Collections类也是集合吗? 答曰:非也! 那为什么要讲解这个类呢? ...

  9. 详解 Paths类 与 Files类

    在本篇博文中,本人主要讲解NIO 的两个核心点 -- 缓冲区(Buffer) 和 通道 (Channel)之一的 缓冲区(Buffer), 有关NIO流的其他知识点请观看本人博文<详解 NIO流 ...

随机推荐

  1. 2020年PHP 面试问题(三)

    2020年PHP 面试问题(一) 2020年PHP 面试问题(二) 一.数据库三范式 第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解: 第二范式:2NF是对记录的惟一性约束,要求 ...

  2. Ajax-使用教程

    运行环境 ajax一定的是运行在网站服务器里面,因此你需要自己配置nodejs服务器 导学:传统的问题还有代理人ajax 传统的http中是又浏览器来做.它在发生和响应的时候网页是不能进行其他操作的 ...

  3. vue 听说你很会传值?

    前置 大小 vue 项目都离不开组件通讯, 在这里总结一下vue组件通讯方式并列出, 都是简单的例子. 适合像我这样的小白.如有错误,欢迎指正. 温馨提示: 下文没有列出 vuex, vuex 也是重 ...

  4. 2019ICPC(银川) - Delivery Route(强连通分量 + 拓扑排序 + dijkstra)

    Delivery Route 题目:有n个派送点,x条双向边,y条单向边,出发点是s,双向边的权值均为正,单向边的权值可以为负数,对于单向边给出了一个限制:如果u->v成立,则v->u一定 ...

  5. 28. 实现 strStr()

    d地址:https://leetcode-cn.com/problems/implement-strstr/ <?php /** 实现 strStr() 函数. 给定一个 haystack 字符 ...

  6. 版本控制git的简单使用

    0.第一次使用时配置: git config --global user.name "your_name" git config --global user.email " ...

  7. RMI 使用笔记

    Java 远程方法调用,即 Java RMI( Java Remote Method Invocation ) .顾名思义,可以使客户机上运行的程序能够调用远程服务器上的对象(方法). 下面主要介绍一 ...

  8. 《综合》MMM集群

    <综合>MMM集群 部署集群基础环境 MySQL-MMM架构部署 MySQL-MMM架构使用 1 部署集群基础环境 1.1 问题 本案例要求为MySQL集群准备基础环境,完成以下任务操作: ...

  9. vscode如何安装eslint插件 代码自动修复

    ESlint:是用来统一JavaScript代码风格的工具,不包含css.html等. 方法和步骤: 通常情况下vue项目都会添加eslint组件,我们可以查看webpack的配置文件package. ...

  10. 单线程IP扫描解析

    扫描代码: private void Button_Click(object sender, RoutedEventArgs e) { a5.Items.Clear(); string str = t ...