`

Arrays用法整理

    博客分类:
  • J2SE
 
阅读更多

本文将整理java.util.Arrays工具类比较常用的方法:

本文介绍的方法基于JDK 1.7 之上。

1.  asList方法 

Java代码  收藏代码
  1. @SafeVarargs  
  2. public static <T> List<T> asList(T... a) {  
  3.     return new ArrayList<>(a);  
  4. }  



   使用该方法可以返回一个固定大小的List,如:

Java代码  收藏代码
  1. List<String> stringList = Arrays.asList("Welcome""To""Java",  
  2.         "World!");  
  3.   
  4. List<Integer> intList = Arrays.asList(1234);  


  
2. binarySearch方法



binarySearch方法支持在整个数组中查找,如:

Java代码  收藏代码
  1. int index = Arrays.binarySearch(new int[] { 1234567 }, 6);  



以及在某个区间范围内查找, 如:

Java代码  收藏代码
  1. public static int binarySearch(int[] a, int fromIndex, int toIndex,  
  2.                                int key) {  
  3.     rangeCheck(a.length, fromIndex, toIndex);  
  4.     return binarySearch0(a, fromIndex, toIndex, key);  
  5. }  

 

Java代码  收藏代码
  1. int index = Arrays.binarySearch(new int[] { 1234567 }, 166);  



3. copyOf及copyOfRange方法





如:

Java代码  收藏代码
  1. String[] names2 = { "Eric""John""Alan""Liz" };  
  2.   
  3.   
  4.         //[Eric, John, Alan]  
  5.         String[] copy = Arrays.copyOf(names2, 3);  
  6.           
  7.         //[Alan, Liz]  
  8.         String[] rangeCopy = Arrays.copyOfRange(names2, 2,  
  9.                 names2.length);  



4. sort方法

Java代码  收藏代码
  1. String[] names = { "Liz""John""Eric""Alan" };  
  2. //只排序前两个  
  3. //[John, Liz, Eric, Alan]  
  4. Arrays.sort(names, 02);  
  5. //全部排序  
  6. //[Alan, Eric, John, Liz]  
  7. Arrays.sort(names);  



另外,Arrays的sort方法也可以结合比较器,完成更加复杂的排序。

Java代码  收藏代码
  1. public static <T> void sort(T[] a, Comparator<? super T> c) {  
  2.     if (LegacyMergeSort.userRequested)  
  3.         legacyMergeSort(a, c);  
  4.     else  
  5.         TimSort.sort(a, c);  
  6. }  



5. toString方法

Arrays的toString方法可以方便我们打印出数组内容。

如:

Java代码  收藏代码
  1. String[] names = { "Liz""John""Eric""Alan" };  
  2. Arrays.sort(names);  
  3. System.out.println(Arrays.toString(names));  



控制台将打印出 [Alan, Eric, John, Liz]

6. deepToString方法

如果需要打印二维数组的内容:

int[][] stuGrades = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };

如果直接用

Java代码  收藏代码
  1. System.out.println(Arrays.toString(stuGrades));  

那么得到的结果类似于
     [[I@35ce36, [I@757aef, [I@d9f9c3]}

这个时候得用deepToString方法才能得到正确的结果[[80, 81, 82], [84, 85, 86], [87, 88, 89]]

Java代码  收藏代码
  1. System.out.println(Arrays.deepToString(stuGrades));  



7. equals方法

使用Arrays.equals来比较1维数组是否相等。

Java代码  收藏代码
  1. String[] names1 = { "Eric""John""Alan""Liz" };  
  2.   
  3.         String[] names2 = { "Eric""John""Alan""Liz" };  
  4.   
  5.         System.out.println(Arrays.equals(names1, names2));  




8. deepEquals方法

Arrays.deepEquals能够去判断更加复杂的数组是否相等。

Java代码  收藏代码
  1. int[][] stuGrades1 = { { 808182 }, { 848586 }, { 878889 } };  
  2.   
  3.         int[][] stuGrades2 = { { 808182 }, { 848586 }, { 878889 } };  
  4.   
  5.         System.out.println(Arrays.deepEquals(stuGrades1, stuGrades2));  



9. fill方法

Java代码  收藏代码
  1. int[] array1 = new int[8];  
  2.         Arrays.fill(array1, 1);  
  3.         //[1, 1, 1, 1, 1, 1, 1, 1]  
  4.         System.out.println(Arrays.toString(array1));  

 

转载请注明出处:http://mouselearnjava.iteye.com/blog/1985990

分享到:
评论

相关推荐

    Why java Arrays use two different sort algorithms for different types?

    总之,Java `Arrays.sort()`方法使用快速排序和Timsort是因为它们各自在处理原始类型和对象类型数组时有其优势。快速排序对原始类型效率高,而Timsort对对象类型提供稳定性和高效处理部分有序数据的能力。这种策略...

    Java常用代码整理

    8. **实用工具类**:Java.util.*包包含许多实用工具类,如Arrays、Collections、Date、Calendar、Random等,它们提供了大量静态方法,简化了常见任务的实现。 在"txt JAVA技术集合"中,可能包含了各种Java技术的...

    Java面试题整理.docx

    ### Java面试题整理知识点 #### 数据结构理解与应用 **数据结构定义与分类:** - **集合结构**:集合中的元素除同属于一种类型外,彼此间没有其他关系。 - **线性结构**:线性结构中的数据元素之间存在一对一的...

    Net面试题大全(个人整理).docx编程资料

    根据提供的文档信息,我们可以整理出以下几个重要的.NET面试知识点: ### 1. ASP.NET 页面间传值方式 在ASP.NET中,页面之间的值传递是常见需求之一。以下是几种常用的页面间传值方式及其特点: - **QueryString*...

    java基本知识整理

    - 使用`Arrays.copyOf()`方法复制数组,格式如下:`类型[] newArray = Arrays.copyOf(类型[] original, int newLength)` - 特点:新数组是原数组的副本,如果`newLength`小于源数组,则新数组会截取部分元素;如果...

    java易错点整理笔记

    如果将数组初始化为空数组,然后尝试使用 Arrays.binarySearch 方法,可能会报错。 4. 阻止一个类被继承或实例化 有两种方法可以阻止一个类被继承:将类声明为final或将所有构造函数声明为private。有两种方法可以...

    java源码整理包

    此外,`Arrays`类提供了一系列静态方法,如`sort()`, `equals()`, `fill()`等,用于排序、比较和填充数组。理解这些方法的工作原理可以提高代码的效率。 5. **数字(Number)**:`Number`是所有数值类型(如`Integer`...

    个人整理Java学习资料

    1. **JavaDoc注解**:JavaDoc是一种生成API文档的工具,常用的标记如`@author`用于指定程序作者,`@version`表示源文件的版本,`@deprecated`标记不再推荐使用的方法,`@param`描述方法参数,`@return`说明方法...

    Java数组的基本操作方法整理

    通常需要使用`Arrays.equals()`方法来判断两个数组的内容是否完全相同。 10. **数组的引用与拷贝**: 当一个数组被赋值给另一个变量时,实际上是创建了对同一个数组的引用,而不是创建了数组的副本。要创建数组的...

    Java基础整理

    - **特点与用法**:静态成员(变量或方法)属于类本身而不是某个对象。 - **注意点**:静态成员在类加载时就创建了,不依赖于任何对象的存在。 - **使用时机**:当某个属性或方法被所有对象共享时,应考虑使用...

    Java常用工具类,多年工作积累整理

    1. **`java.util.Arrays`**:这是一个非常基础且重要的工具类,提供了对数组进行操作的各种静态方法,如排序、复制、填充、比较等。例如,`Arrays.sort()`用于对数组进行升序或降序排序,`Arrays.copyOf()`则用于...

    韩顺平 java基础加强笔记整理

    ### 韩顺平 Java 基础加强知识点整理 #### 一、Eclipse 工作空间与 Debug 模式 - **工作空间 (Workspace)** - 是 Eclipse 中用于存放项目的目录,用户可以在 Eclipse 中新建项目并选择存放的位置。 - **Debug ...

    adnroid 下拉框代码整理

    本篇文章将围绕“Android下拉框代码整理”这一主题,深入探讨如何在Android应用中实现和优化Spinner的功能。 首先,我们来了解一下Spinner的基本使用。在XML布局文件中,可以通过以下方式添加一个Spinner: ```xml...

    JAVA SE基础篇-资料整理

    ### JAVA SE基础篇-资料整理 #### JAVA历史特点、开发环境 Java 作为一种跨平台的高级编程语言,自1995年由Sun Microsystems公司推出以来,迅速成为了软件开发领域的重要工具之一。Java 最初的设计目的是为了实现...

    JAVA核心知识整理+详解+实战.rar

    Java标准库提供了大量实用类和工具,如Arrays、Collections、Date和Time API等,文件可能包含这些API的使用示例。 最后,如果涉及到实战部分,可能涵盖Web开发(如Servlet和JSP)、桌面应用(如Swing或JavaFX)、...

    Java数组实例练习题整理

    然后,我们使用 `Arrays.copyOf` 方法创建一个副本数组 `arr1`,并使用 `Arrays.copyOfRange` 方法创建一个新的数组 `num1`,该数组包含原始数组的所有元素,除了最后一个元素。最后,我们使用 `System.out.println`...

    java学习笔记整理

    ### Java学习笔记整理 #### 1. Java简介 ##### 1.1 计算机编程和开发语言 计算机系统由硬件系统和软件系统组成。软件系统又进一步细分为系统软件和应用软件。其中,系统软件包括操作系统、编译系统、数据库系统等...

    java集合(自学整理)

    需要注意的是,该方法接受泛型的变长参数,因此不能直接使用基本类型数组作为参数,只能使用相应的包装类型数组。例如: ```java Integer[] arr = {1, 2, 3}; List&lt;Integer&gt; list = Arrays.asList(arr); ``` ...

    java面向对象编程知识点笔记整理与总结0

    ### Java面向对象编程知识点笔记整理与总结 #### Java三个版本及其应用场景 - **J2SE (Java 2 Platform Standard Edition)**:适用于开发桌面应用程序及一般的应用程序,是其他两个平台的基础。 - **J2EE (Java 2 ...

    技术面试题整理.txt

    ### Java核心基础与技术面试题知识点整理 #### Java基础概念 - **Java语言特性**:Java是一种面向对象的编程语言,具有平台无关性、自动内存管理(通过JVM实现垃圾回收)等特点。 - **编译与运行**:Java源代码(....

Global site tag (gtag.js) - Google Analytics