本文将整理java.util.Arrays工具类比较常用的方法:
本文介绍的方法基于JDK 1.7 之上。
1. asList方法
- @SafeVarargs
- public static <T> List<T> asList(T... a) {
- return new ArrayList<>(a);
- }
使用该方法可以返回一个固定大小的List,如:
- List<String> stringList = Arrays.asList("Welcome", "To", "Java",
- "World!");
- List<Integer> intList = Arrays.asList(1, 2, 3, 4);
2. binarySearch方法
binarySearch方法支持在整个数组中查找,如:
- int index = Arrays.binarySearch(new int[] { 1, 2, 3, 4, 5, 6, 7 }, 6);
以及在某个区间范围内查找, 如:
- public static int binarySearch(int[] a, int fromIndex, int toIndex,
- int key) {
- rangeCheck(a.length, fromIndex, toIndex);
- return binarySearch0(a, fromIndex, toIndex, key);
- }
- int index = Arrays.binarySearch(new int[] { 1, 2, 3, 4, 5, 6, 7 }, 1, 6, 6);
3. copyOf及copyOfRange方法
如:
- String[] names2 = { "Eric", "John", "Alan", "Liz" };
- //[Eric, John, Alan]
- String[] copy = Arrays.copyOf(names2, 3);
- //[Alan, Liz]
- String[] rangeCopy = Arrays.copyOfRange(names2, 2,
- names2.length);
4. sort方法
- String[] names = { "Liz", "John", "Eric", "Alan" };
- //只排序前两个
- //[John, Liz, Eric, Alan]
- Arrays.sort(names, 0, 2);
- //全部排序
- //[Alan, Eric, John, Liz]
- Arrays.sort(names);
另外,Arrays的sort方法也可以结合比较器,完成更加复杂的排序。
- public static <T> void sort(T[] a, Comparator<? super T> c) {
- if (LegacyMergeSort.userRequested)
- legacyMergeSort(a, c);
- else
- TimSort.sort(a, c);
- }
5. toString方法
Arrays的toString方法可以方便我们打印出数组内容。
如:
- String[] names = { "Liz", "John", "Eric", "Alan" };
- Arrays.sort(names);
- System.out.println(Arrays.toString(names));
控制台将打印出 [Alan, Eric, John, Liz]
6. deepToString方法
如果需要打印二维数组的内容:
int[][] stuGrades = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
如果直接用
- System.out.println(Arrays.toString(stuGrades));
那么得到的结果类似于
[[I@35ce36, [I@757aef, [I@d9f9c3]}
这个时候得用deepToString方法才能得到正确的结果[[80, 81, 82], [84, 85, 86], [87, 88, 89]]
- System.out.println(Arrays.deepToString(stuGrades));
7. equals方法
使用Arrays.equals来比较1维数组是否相等。
- String[] names1 = { "Eric", "John", "Alan", "Liz" };
- String[] names2 = { "Eric", "John", "Alan", "Liz" };
- System.out.println(Arrays.equals(names1, names2));
8. deepEquals方法
Arrays.deepEquals能够去判断更加复杂的数组是否相等。
- int[][] stuGrades1 = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
- int[][] stuGrades2 = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
- System.out.println(Arrays.deepEquals(stuGrades1, stuGrades2));
9. fill方法
- int[] array1 = new int[8];
- Arrays.fill(array1, 1);
- //[1, 1, 1, 1, 1, 1, 1, 1]
- System.out.println(Arrays.toString(array1));
转载请注明出处:http://mouselearnjava.iteye.com/blog/1985990
相关推荐
总之,Java `Arrays.sort()`方法使用快速排序和Timsort是因为它们各自在处理原始类型和对象类型数组时有其优势。快速排序对原始类型效率高,而Timsort对对象类型提供稳定性和高效处理部分有序数据的能力。这种策略...
8. **实用工具类**:Java.util.*包包含许多实用工具类,如Arrays、Collections、Date、Calendar、Random等,它们提供了大量静态方法,简化了常见任务的实现。 在"txt JAVA技术集合"中,可能包含了各种Java技术的...
### Java面试题整理知识点 #### 数据结构理解与应用 **数据结构定义与分类:** - **集合结构**:集合中的元素除同属于一种类型外,彼此间没有其他关系。 - **线性结构**:线性结构中的数据元素之间存在一对一的...
根据提供的文档信息,我们可以整理出以下几个重要的.NET面试知识点: ### 1. ASP.NET 页面间传值方式 在ASP.NET中,页面之间的值传递是常见需求之一。以下是几种常用的页面间传值方式及其特点: - **QueryString*...
- 使用`Arrays.copyOf()`方法复制数组,格式如下:`类型[] newArray = Arrays.copyOf(类型[] original, int newLength)` - 特点:新数组是原数组的副本,如果`newLength`小于源数组,则新数组会截取部分元素;如果...
如果将数组初始化为空数组,然后尝试使用 Arrays.binarySearch 方法,可能会报错。 4. 阻止一个类被继承或实例化 有两种方法可以阻止一个类被继承:将类声明为final或将所有构造函数声明为private。有两种方法可以...
此外,`Arrays`类提供了一系列静态方法,如`sort()`, `equals()`, `fill()`等,用于排序、比较和填充数组。理解这些方法的工作原理可以提高代码的效率。 5. **数字(Number)**:`Number`是所有数值类型(如`Integer`...
1. **JavaDoc注解**:JavaDoc是一种生成API文档的工具,常用的标记如`@author`用于指定程序作者,`@version`表示源文件的版本,`@deprecated`标记不再推荐使用的方法,`@param`描述方法参数,`@return`说明方法...
通常需要使用`Arrays.equals()`方法来判断两个数组的内容是否完全相同。 10. **数组的引用与拷贝**: 当一个数组被赋值给另一个变量时,实际上是创建了对同一个数组的引用,而不是创建了数组的副本。要创建数组的...
- **特点与用法**:静态成员(变量或方法)属于类本身而不是某个对象。 - **注意点**:静态成员在类加载时就创建了,不依赖于任何对象的存在。 - **使用时机**:当某个属性或方法被所有对象共享时,应考虑使用...
1. **`java.util.Arrays`**:这是一个非常基础且重要的工具类,提供了对数组进行操作的各种静态方法,如排序、复制、填充、比较等。例如,`Arrays.sort()`用于对数组进行升序或降序排序,`Arrays.copyOf()`则用于...
### 韩顺平 Java 基础加强知识点整理 #### 一、Eclipse 工作空间与 Debug 模式 - **工作空间 (Workspace)** - 是 Eclipse 中用于存放项目的目录,用户可以在 Eclipse 中新建项目并选择存放的位置。 - **Debug ...
本篇文章将围绕“Android下拉框代码整理”这一主题,深入探讨如何在Android应用中实现和优化Spinner的功能。 首先,我们来了解一下Spinner的基本使用。在XML布局文件中,可以通过以下方式添加一个Spinner: ```xml...
### JAVA SE基础篇-资料整理 #### JAVA历史特点、开发环境 Java 作为一种跨平台的高级编程语言,自1995年由Sun Microsystems公司推出以来,迅速成为了软件开发领域的重要工具之一。Java 最初的设计目的是为了实现...
Java标准库提供了大量实用类和工具,如Arrays、Collections、Date和Time API等,文件可能包含这些API的使用示例。 最后,如果涉及到实战部分,可能涵盖Web开发(如Servlet和JSP)、桌面应用(如Swing或JavaFX)、...
然后,我们使用 `Arrays.copyOf` 方法创建一个副本数组 `arr1`,并使用 `Arrays.copyOfRange` 方法创建一个新的数组 `num1`,该数组包含原始数组的所有元素,除了最后一个元素。最后,我们使用 `System.out.println`...
### Java学习笔记整理 #### 1. Java简介 ##### 1.1 计算机编程和开发语言 计算机系统由硬件系统和软件系统组成。软件系统又进一步细分为系统软件和应用软件。其中,系统软件包括操作系统、编译系统、数据库系统等...
需要注意的是,该方法接受泛型的变长参数,因此不能直接使用基本类型数组作为参数,只能使用相应的包装类型数组。例如: ```java Integer[] arr = {1, 2, 3}; List<Integer> list = Arrays.asList(arr); ``` ...
### Java面向对象编程知识点笔记整理与总结 #### Java三个版本及其应用场景 - **J2SE (Java 2 Platform Standard Edition)**:适用于开发桌面应用程序及一般的应用程序,是其他两个平台的基础。 - **J2EE (Java 2 ...
### Java核心基础与技术面试题知识点整理 #### Java基础概念 - **Java语言特性**:Java是一种面向对象的编程语言,具有平台无关性、自动内存管理(通过JVM实现垃圾回收)等特点。 - **编译与运行**:Java源代码(....