java Arrays工具类实例详解

Arrays工具类属于java中常用的工具类

public static void sort(int[] a)
public static void sort(int[] a,int fromIndex, int toIndex) 

public static void sort(long[] a)
public static void sort(long[] a,int fromIndex, int toIndex) 

public static void sort(short[] a)
public static void sort(short[] a,int fromIndex, int toIndex) 

public static void sort(char[] a)
public static void sort(char[] a,int fromIndex, int toIndex) 

public static void sort(byte[] a)
public static void sort(byte[] a,int fromIndex, int toIndex) 

public static void sort(double[] a)
public static void sort(double[] a,int fromIndex, int toIndex) 

public static void sort(float[] a)
public static void sort(float[] a,int fromIndex, int toIndex)

对指定组的指定范围按数字升序进行排序。排序的范围从索引 fromIndex(包括)一直到索引 toIndex(不包括)。(如果 fromIndex==toIndex,则排序范围为空。)

a - 要排序的数组

fromIndex - 要排序的第一个元素的索引(包括)

toIndex - 要排序的最后一个元素的索引(不包括)

public static void sort(Object[] a)
public static void sort(Object[] a,int fromIndex, int toIndex) 

同上,不过数组中的所有元素都必须实现 Comparable 接口。此外,数组中的所有元素都必须是可相互比较的(也就是说,对于数组中的任何 e1 和 e2 元素而言,e1.compareTo(e2) 不得抛出 ClassCastException)。

保证此排序是稳定的:不会因调用 sort 方法而对相等的元素进行重新排序。

public static <T> void sort(T[] a, Comparator<? super T> c)
public static <T> void sort(T[] a,int fromIndex,int toIndex,Comparator<? super T> c) 

根据指定比较器产生的顺序对指定对象数组进行排序。数组中的所有元素都必须是通过指定比较器可相互比较的(也就是说,对于数组中的任何 e1 和 e2 元素而言,c.compare(e1, e2) 不得抛出 ClassCastException)。

public static int binarySearch(long[] a,long key)
public static int binarySearch(long[] a,int fromIndex,int toIndex,long key) 

public static int binarySearch(int[] a,int key)
public static int binarySearch(int[] a,int fromIndex,int toIndex,int key) 

public static int binarySearch(short[] a,short key)
public static int binarySearch(short[] a,int fromIndex,int toIndex,short key) 

public static int binarySearch(char[] a,char key)
public static int binarySearch(char[] a,int fromIndex,int toIndex,char key) 

public static int binarySearch(byte[] a,byte key)
public static int binarySearch(byte[] a,int fromIndex,int toIndex,byte key) 

public static int binarySearch(double[] a,double key)
public static int binarySearch(double[] a,int fromIndex,int toIndex,double key) 

public static int binarySearch(float[] a,float key)
public static int binarySearch(float[] a,int fromIndex,int toIndex,float key) 

public static int binarySearch(Object[] a,Object key)
public static int binarySearch(Object[] a,int fromIndex,int toIndex,Object key) 

public static <T> int binarySearch(T[] a,T key,Comparator<? super T> c)
public static <T> int binarySearch(T[] a,int fromIndex,int toIndex,T key,Comparator<? super T> c)

使用二分搜索法来搜索指定数组的范围,以获得指定对象。在进行此调用之前,必须根据指定的比较器对范围进行升序排序。如果没有对范围进行排序,则结果是不确定的。如果范围包含多个等于指定对象的元素,则无法保证找到的是哪一个。

以上就是java Arrays工具类的实例详解,关于java的文章本站还有很多,大家可以搜索参考,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2017-07-17

java 源码分析Arrays.asList方法详解

最近,抽空把java Arrays 工具类的asList 方法做了源码分析,在网上整理了相关资料,记录下来,希望也能帮助读者! Arrays工具类提供了一个方法asList, 使用该方法可以将一个变长参数或者数组转换成List . 其源代码如下: /** * Returns a fixed-size list backed by the specified array. (Changes to * the returned list "write through" to the arr

java的arrays数组排序示例分享

Java API对Arrays类的说明是:此类包含用来操作数组(比如排序和搜索)的各种方法. 1.对基本数据类型的数组的排序 说明: (1)Arrays类中的sort()使用的是"经过调优的快速排序法"; (2)比如int[],double[],char[]等基数据类型的数组,Arrays类之只是提供了默认的升序排列,没有提供相应的降序排列方法. (3)要对基础类型的数组进行降序排序,需要将这些数组转化为对应的封装类数组,如Integer[],Double[],Character[]等

java Arrays类详解及实例代码

最近做项目 用到Arrays 类,这里整理下,希望大家能够掌握Arrays . 1.Arrays类概述 针对数组进行操作的工具类. 提供了排序,查找等功能. 2.成员方法 public static String toString(int[] a) public static void sort(int[] a) public static int binarySearch(int[] a,int value) package com; import java.util.Arrays; /**

java的Arrays工具类实战

java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的.静态方法是属于类的,不是属于类的对象.所以可以直接使用类名加方法名进行调用.Arrays作为一个工具类,能很好的操作数组.下面介绍主要使用的几个函数. 1.fill方法 fill方法主要用来填充数组,这里我们举最简单的int类型吧(其它类型的一样) 看Arrays的fill源码 示例代码: Java代码 publicstaticvoidmain(String[] args) { inta[]=newint[5]; /

Java中Arrays.asList()方法详解及实例

Arrays.asList() 是将数组作为列表. 问题来源于: public class Test { public static void main(String[] args) { int[] a = {1, 2, 3, 4}; List list = Arrays.asList(a); System.out.println(list.size()); //1 } } 期望的输出是 list 里面也有4个元素,也就是 size 为4,然而结果是1. 原因如下: 在 Arrays.asLis

Java concurrency集合之CopyOnWriteArraySet_动力节点Java学院整理

CopyOnWriteArraySet介绍 它是线程安全的无序的集合,可以将它理解成线程安全的HashSet.有意思的是,CopyOnWriteArraySet和HashSet虽然都继承于共同的父类AbstractSet:但是,HashSet是通过"散列表(HashMap)"实现的,而CopyOnWriteArraySet则是通过"动态数组(CopyOnWriteArrayList)"实现的,并不是散列表. 和CopyOnWriteArrayList类似,CopyO

Java concurrency集合之ConcurrentHashMap_动力节点Java学院整理

ConcurrentHashMap介绍 ConcurrentHashMap是线程安全的哈希表.HashMap, Hashtable, ConcurrentHashMap之间的关联如下: HashMap是非线程安全的哈希表,常用于单线程程序中. Hashtable是线程安全的哈希表,它是通过synchronized来保证线程安全的:即,多线程通过同一个"对象的同步锁"来实现并发控制.Hashtable在线程竞争激烈时,效率比较低(此时建议使用ConcurrentHashMap)!因为当一

Java concurrency集合之LinkedBlockingDeque_动力节点Java学院整理

LinkedBlockingDeque介绍 LinkedBlockingDeque是双向链表实现的双向并发阻塞队列.该阻塞队列同时支持FIFO和FILO两种操作方式,即可以从队列的头和尾同时操作(插入/删除):并且,该阻塞队列是支持线程安全. 此外,LinkedBlockingDeque还是可选容量的(防止过度膨胀),即可以指定队列的容量.如果不指定,默认容量大小等于Integer.MAX_VALUE. LinkedBlockingDeque原理和数据结构 LinkedBlockingDeque

Java concurrency集合之ConcurrentSkipListMap_动力节点Java学院整理

ConcurrentSkipListMap介绍 ConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景. ConcurrentSkipListMap和TreeMap,它们虽然都是有序的哈希表.但是,第一,它们的线程安全机制不同,TreeMap是非线程安全的,而ConcurrentSkipListMap是线程安全的.第二,ConcurrentSkipListMap是通过跳表实现的,而TreeMap是通过红黑树实现的. 关于跳表(Skip List),它是平衡树的一种

Java concurrency集合之ConcurrentLinkedQueue_动力节点Java学院整理

ConcurrentLinkedQueue介绍 ConcurrentLinkedQueue是线程安全的队列,它适用于"高并发"的场景. 它是一个基于链接节点的无界线程安全队列,按照 FIFO(先进先出)原则对元素进行排序.队列元素中不可以放置null元素(内部实现的特殊节点除外). ConcurrentLinkedQueue原理和数据结构 ConcurrentLinkedQueue的数据结构,如下图所示: 说明: 1. ConcurrentLinkedQueue继承于AbstractQ

Java concurrency集合之ConcurrentSkipListSet_动力节点Java学院整理

ConcurrentSkipListSet介绍 ConcurrentSkipListSet是线程安全的有序的集合,适用于高并发的场景. ConcurrentSkipListSet和TreeSet,它们虽然都是有序的集合.但是,第一,它们的线程安全机制不同,TreeSet是非线程安全的,而ConcurrentSkipListSet是线程安全的.第二,ConcurrentSkipListSet是通过ConcurrentSkipListMap实现的,而TreeSet是通过TreeMap实现的. Con

Java concurrency集合之ArrayBlockingQueue_动力节点Java学院整理

ArrayBlockingQueue介绍 ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列. 线程安全是指,ArrayBlockingQueue内部通过"互斥锁"保护竞争资源,实现了多线程对竞争资源的互斥访问.而有界,则是指ArrayBlockingQueue对应的数组是有界限的. 阻塞队列,是指多线程访问竞争资源时,当竞争资源已被某线程获取时,其它要获取该资源的线程需要阻塞等待:而且,ArrayBlockingQueue是按 FIFO(先进先出)原则对元素进行

Java concurrency集合之 CopyOnWriteArrayList_动力节点Java学院整理

CopyOnWriteArrayList介绍 它相当于线程安全的ArrayList.和ArrayList一样,它是个可变数组:但是和ArrayList不同的时,它具有以下特性: 1. 它最适合于具有以下特征的应用程序:List 大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止线程间的冲突. 2. 它是线程安全的. 3. 因为通常需要复制整个基础数组,所以可变操作(add().set() 和 remove() 等等)的开销很大. 4. 迭代器支持hasNext(), next()等不可

Java concurrency之锁_动力节点Java学院整理

根据锁的添加到Java中的时间,Java中的锁,可以分为"同步锁"和"JUC包中的锁". 同步锁 即通过synchronized关键字来进行同步,实现对竞争资源的互斥访问的锁.Java 1.0版本中就已经支持同步锁了. 同步锁的原理是,对于每一个对象,有且仅有一个同步锁:不同的线程能共同访问该同步锁.但是,在同一个时间点,该同步锁能且只能被一个线程获取到.这样,获取到同步锁的线程就能进行CPU调度,从而在CPU上执行:而没有获取到同步锁的线程,必须进行等待,直到获取

Java中StringBuffer和StringBuilder_动力节点Java学院整理

下面先给大家介绍下String.StringBuffer.StringBuilder区别,具体详情如下所示: StringBuffer.StringBuilder和String一样,也用来代表字符串.String类是不可变类,任何对String的改变都 会引发新的String对象的生成:StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象.既然可变和不可变都有了,为何还有一个StringBuilder呢?相信初期的你,在进行append时,一般都会选择StringB