声明:部分内容参考自:https://liuyanzhao.com/2863.html


Arrays类介绍

这个类包含了用于操作数组的各种方法,诸如:排序和搜索。

这个类还包含一个静态方法asList以允许把数组看作list处理。

如果方法引用的数组为null, 方法将会抛出NullPointerException。

类定义

public class Arrays

extends Object

常用方法

1.填充数组:fill
2.数组元素排序:sort
3.比较数组元素是否相等:equals

分析:如果是arr1.equals(arr2),则返回false,因为equals比较的是两个对象的地址,不是里面的数,而Arrays.equals重写了

equals,所以,这里能比较元素是否相等。

这里补充一下,如果还是不用Arrays.equals,那么我们应该如何重写equals来比较两个数组的元素是否相等呢?这里提供一段代码。

4.二分查找法找指定元素的索引值(下标):binarySearch
5.截取数组:copeOf和copeOfRange
6.将数组转换为List处理

注意:

(1)该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean)
(2)该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新
(3)不支持add和remove方法

package com.dylan.collection;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List; /**
* 介绍Arrays类的使用
*
* @author xusucheng
* @create 2018-02-04
**/
public class ArraysDemo {
public static void main(String[] args) {
//1. 填充数组fill
fill();
//2. 数组元素排序:sort
sort();
//3. 比较数组元素是否相等:equals
equals();
//4. 二分查找法找指定元素的索引值(下标):binarySearch
search();
//5. 截取数组:copeOf和copeOfRange
copy();
//6. 将数组转换为List处理
toList(); } private static void print(int[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
} System.out.println();
} private static void fill() {
int[] arr = new int[5];
Arrays.fill(arr, 2); int[] arr1 = new int[5];
Arrays.fill(arr1, 1, 3, 8);
print(arr);
print(arr1);
} private static void sort(){
int[] arr = {3,2,1,5,4};
Arrays.sort(arr);
int[] arr1 = {3,2,1,5,4};
Arrays.sort(arr,1,3);
print(arr);
print(arr1);
} private static void equals(){
int[] arr1 = {1,2,3};
int[] arr2 = {1,2,3};
System.out.println("arr1=arr2?"+Arrays.equals(arr1,arr2));
} private static void search(){
int[] arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 20));
System.out.println(Arrays.binarySearch(arr, 35));
System.out.println(Arrays.binarySearch(arr, 0,3,30));
System.out.println(Arrays.binarySearch(arr, 0,3,40)); } private static void copy(){
int[] arr = {10,20,30,40,50};
int[] arr1 = Arrays.copyOf(arr, 3);
int[] arr2 = Arrays.copyOfRange(arr,1,3); print(arr1);
print(arr2);
} private static void toList(){
Integer[] arr = {10,20,30,40,50};
List list = Arrays.asList(arr);
Iterator it = list.iterator();
while (it.hasNext()){
System.out.print(it.next()+" ");
}
}
}

Java集合框架学习(十二) Arrays类详解的更多相关文章

  1. 集合框架学习之Collection和Map详解

    线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以 ...

  2. Java进阶(三十二) HttpClient使用详解

    Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...

  3. Java基础-进程与线程之Thread类详解

    Java基础-进程与线程之Thread类详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程与线程的区别 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 ...

  4. Java集合框架学习(一)List

    先附一张Java集合框架图. 从上面的集合框架图可以看到,Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Coll ...

  5. Java集合框架学习

    集合框架 集合框架的目标 该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现必须是高效的. 该框架允许 不同类型的集合,以类似的方式工作,具有高度的互操作性. 对一个集合的扩展和适应必 ...

  6. 【java基础 11】java集合框架学习

    导读:本篇博客主要是从整体上了解java的集合框架,然后主要介绍几个自己在项目中用到的结构,比如说:hashtable.hashmap.hashset.arraylist等! 一.宏观预览 从宏观上看 ...

  7. Java集合框架学习笔记

    集合类的由来:对象用于封装特有数据,对象多了需要存储,如果对象的长度不确定,就使用集合存储. 集合特点1.用于存储对象的容器.2.集合的长度可变.3.集合中不可以存储基本类型 集合容器因为内部的数据结 ...

  8. java.util.Arrays类详解(源码总结)

    概述 Arrays类位于java.util包下,是一个对数组操作的工具类.今天详细的看了看Arrays类的4千多行源码,现将Arrays类中的方法做一个总结(JDK版本:1.6.0_34).Array ...

  9. 【Java入门提高篇】Day30 Java容器类详解(十二)TreeMap详解

    今天来看看Map家族的另一名大将——TreeMap.前面已经介绍过Map家族的两名大将,分别是HashMap,LinkedHashMap.HashMap可以高效查找和存储元素,LinkedHashMa ...

  10. Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)

    1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...

随机推荐

  1. [转帖]从小白到精通:揭秘perf工具的全部功能与操作技巧

    https://zhuanlan.zhihu.com/p/664396453 ​ 目录 收起 一.引言 二.理解perf工具的基本概念 三.安装与配置perf工具 3.1.不同操作系统的perf工具安 ...

  2. [转帖]linux 磁盘队列深度nr_requests 和 queue_depth

    linux 磁盘队列深度nr_requests 和 queue_depth nr_requests 和 queue_depth 修改配置值 nr_requests 和 queue_depth 区别 i ...

  3. [转帖]Windows系统内置测试工具(winsat)

    WinSAT 是 Windows 系统评估工具(Windows System Assessment Tool)的缩写,是从 Windows Vista 开始便内置于系统之中的命令行工具,可对 Wind ...

  4. [转帖]kubernetes calico网络

    https://plantegg.github.io/2022/01/19/kubernetes%20calico%E7%BD%91%E7%BB%9C/ cni 网络 cni0 is a Linux ...

  5. adb基础指令

    1.查看连接的设备 adb.exe  devices/adb devices device表示连接成功,offline表示设备未连接或未响应 2.进入命令模式,指定哪台设备 adb  -s  序列号  ...

  6. 【杂题,树】【Uoj】Uoj618 【JOISC2021】聚会 2

    2023.7.3 Problem Link 给定一棵 \(n\) 个点的树,对于一个点集 \(S\),定义 \(f(u,S)\) 为 \(\min_u \sum_{v\in S} \mathrm{di ...

  7. axios发送请求时携带token

    请求头携带token async getUserlist(){ // 需要授权的Api,必须在青丘头中使用Authorization 字段提供token令牌 const AUTH_TOKEN=loca ...

  8. 使用 NuGet.Server 创建和部署 ASP.NET Web 应用程序搭建私有Nuget服务器

    使用 NuGet.Server 创建和部署 ASP.NET Web 应用程序搭建私有Nuget服务器 在Visual Studio中,选择"新建>文件>"Project ...

  9. 【三】gym简单画图、快来上手入门吧,超级简单!

    相关文章: [一]gym环境安装以及安装遇到的错误解决 [二]gym初次入门一学就会-简明教程 [三]gym简单画图 [四]gym搭建自己的环境,全网最详细版本,3分钟你就学会了! [五]gym搭建自 ...

  10. MySQL 权限与备份管理(精简笔记)

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RD ...